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%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 einimg
-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?
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.
Sie können Bilddaten tatsächlich in das img
-Tag im Browser einbetten, daher könnte der Ajax-Code folgendermaßen aussehen:
Beachten Sie, dass Sie diese Funktion base64_encode
schreiben müssen. Schauen Sie sich diese Frage an - die Funktion ist dort gegeben.
Tags und Links javascript php image ajax png