how to send png image from server to display in browser via ajax
You could display a default "no access" image to users who are forbidden to access the image:
<?php$file = $_GET['file']; // don't forget to sanitize this!header('Content-type: image/png');if (user_is_allowed_to_access($file)) { readfile($file);}else { readfile('some/default/file.png');}
And, on the client side:
<img src="script.php?file=path/to/file.png" />
Alternatively, if you really really want or need to send the data via Ajax, you can Base64 encode it:
<?phpecho base64_encode(file_get_contents($file));
And place the response in an img
tag using the Data URI scheme
var img = '<img src="data:image/png;base64,'+ server_reponse +'"/>';
Given that the Base64 encoded data is significantly larger than the original, you could send the raw data and encode it in the browser using a library.
Does that make sense to you?
Instead of getting get_image.php through AJAX, why not just use:
<img src="get_image.php" />
It's practically the same thing. You can just use AJAX to update the <img>
dynamically.
You can't do it via ajax.
You could do something like this:
<img src="script.php?image=image_name" />
Then use JavaScript to change the query string.