comment envoyer une image png à partir du serveur à afficher dans le navigateur via ajax

J'ai eu un moment difficile avec ce qui doit être incroyablement une tâche normale. J'ai télécharger et sauvegarder des images sur mon serveur web et d'enregistrer le chemin d'accès au fichier de base de données MySQL (c'est tout ce travail). La chose qui ne fonctionne pas est l'extraction d'un fichier image à partir du serveur et l'afficher sur la page via ajax.

A l'origine, j'essayais juste de récupérer le chemin d'accès à partir de la base de données et mettre à jour une balise de src attribut avec le chemin d'accès à l'image. C'était du travail, mais de cette façon, toutes les images sont dans un dossier sur le serveur où les gens ont tous accès à eux. Ce n'est pas bon. Je ne peux avoir les photos qui appartiennent à certains utilisateurs accessibles par ces utilisateurs.

Afin de restreindre l'accès à ces photos, j'ai ajouté une directive Apache sur le dossier, qui a réussi à accès restreint. Le problème devint alors que je ne pouvais pas afficher les images dans le navigateur par réglage de la src attribut à ce chemin. Voir mon post: https://serverfault.com/questions/425974/apache-deny-access-to-images-folder-but-still-able-to-display-via-img-on-site

Enfin, j'ai appris que je dois utiliser PHP pour lire les données d'image directement depuis le serveur, et envoyer ces données vers le navigateur. J'ai utilisé le file_get_contents() fonction, qui fonctionne à convertir le fichier image (PNG) sur le serveur dans une chaîne de caractères. Je retourne cette chaîne pour le navigateur dans un appel ajax. La chose que je ne peux pas obtenir est: comment convertir cette chaîne en une image à l'aide de JavaScript?

Voir ce code:

$.ajax({
    url: get_image.php,
    success: function(image_string){
        //how to load this image string from file_get_contents to the browser??
    }
});
Pourquoi ne pas simplement mettre à jour l'attribut src d'une balise img avec le javascript? Vous pouvez avoir teh src point à un script php qui accepte des valeurs entières qu'carte pour les images et avoir le script PHP côté serveur echo le fichier de contenu.
Vous pourriez faire le src de l'image est le fichier php: <img src="/get_image.php"/> Puis utiliser PHP pour la sortie de l'image directement
Dans .Net, nous voudrions faire une demande de gestionnaire qui prendrait en paramètre et retourne le contenu comme s'il s'agissait d'une requête normale. Je ne suis pas assez familier avec PHP pour savoir si il y a quelque chose de même disponible, mais je suis sûr que quelque chose pourrait être fait. Le concept de base est que vous définissez l'url de l'image/background-image CSS à quelque chose comme: http://myserver.com/getfile.php?q=myimage.jpg Le serveur, puis ouvre le fichier, obtient le contenu, et l'envoie normal httpresponse.
Merci à tous pour l'aide!!

OriginalL'auteur jeffery_the_wind | 2012-09-10