So senden Sie ein Png-Bild vom Server zur Anzeige im Browser über Ajax

8

Ich hatte eine schwere Zeit mit einer unglaublich normalen Aufgabe. Ich lade Bilder hoch und speichere sie auf meinem Webserver und speichere den Pfad zur Datei in der MySQL-Datenbank (das funktioniert alles). Die Sache, die nicht funktioniert, ist, eine Bilddatei vom Server zu holen und sie auf der Seite über Ajax anzuzeigen.

Ursprünglich wollte ich nur den Pfad von der Datenbank abrufen und das Attribut src des Tags mit dem Pfad zum Bild aktualisieren. Das funktionierte, aber auf diese Weise befinden sich alle Bilder in einem Ordner auf dem Server, auf den alle Zugriff haben. Das ist nicht gut. Ich kann nur die Bilder, die bestimmten Benutzern gehören, durch diese Benutzer zugänglich machen.

Um den Zugriff auf diese Fotos einzuschränken, habe ich eine Apache-Direktive für diesen Ordner hinzugefügt, die den Zugriff erfolgreich eingeschränkt hat. Das Problem bestand dann darin, dass ich die Bilder im Browser nicht anzeigen konnte, indem ich das src -Attribut auf diesen Pfad setzte. Siehe meinen Beitrag: Ссылка

Endlich habe ich gelernt, dass ich PHP benutzen muss, um die Bilddaten direkt vom Server zu lesen und diese Daten an den Browser zu senden. Ich habe die Funktion file_get_contents () verwendet, die zum Konvertieren der Bilddatei (PNG ) auf dem Server in eine Zeichenfolge. Ich gebe diese Zeichenfolge in einem Ajax-Aufruf an den Browser zurück. Das Ding, das ich nicht bekommen kann, ist: wie man diese Zeichenkette zurück in ein Bild mit JavaScript umwandelt?

Siehe diesen Code:

%Vor%     
jeffery_the_wind 10.09.2012, 16:52
quelle

4 Antworten

14

Sie können Benutzern, denen der Zugriff auf das Bild untersagt ist, ein Standardbild ohne Zugriff anzeigen:

%Vor%

Und auf der Client-Seite:

%Vor%

Wenn Sie die Daten wirklich wirklich über Ajax senden wollen oder müssen, können Sie Base64 dafür codieren:

%Vor%

Fügen Sie die Antwort mithilfe des Daten-URI-Schemas

in ein img -Tag ein %Vor%

Da die Base64-codierten Daten wesentlich größer sind als das Original, könnten Sie die Rohdaten senden und im Browser mit Bibliothek .

Macht das für Sie Sinn?

    
Alexei 10.09.2012, 17:03
quelle
3

Anstatt get_image.php durch AJAX zu bekommen, warum nicht einfach:

%Vor%

Es ist praktisch dasselbe. Sie können AJAX einfach verwenden, um <img> dynamisch zu aktualisieren.

    
rationalboss 10.09.2012 16:58
quelle
2

Sie können es nicht über Ajax tun.

Sie könnten so etwas tun:

%Vor%

Verwenden Sie dann JavaScript, um die Abfragezeichenfolge zu ändern.

    
Korikulum 10.09.2012 16:56
quelle
1

Sie können Bilddaten tatsächlich in das img -Tag im Browser einbetten, daher könnte der Ajax-Code folgendermaßen aussehen:

%Vor%

Beachten Sie, dass Sie diese Funktion base64_encode schreiben müssen. Schauen Sie sich diese Frage an - die Funktion ist dort gegeben.

    
Aleks G 10.09.2012 17:01
quelle

Tags und Links