J'essaie d'afficher une image en ligne sur une page. Il est servi par un contrôleur codeigniter.Content-disposition: en-tête inline n'affichera pas les images en ligne?
class Asset extends MY_Controller {
function index($folder, $file) {
$asset = "assets/$folder/$file";
if (!file_exists($asset)) {
show_404();
return;
}
switch ($folder) {
case 'css':
header('Content-type: text/css');
break;
case 'js':
header('Content-type: text/javascript');
break;
case 'images':
$ext = substr($file, strrpos($file, '.'));
switch ($ext) {
case 'jpg':
$ext = 'jpeg';
break;
case 'svg':
$ext = 'svg+xml';
break;
}
header('Content-Disposition: inline');
header('Content-type: image/'.$ext);
}
readfile($asset);
}
}
Lorsque je charge une image dans Chrome de FF, la fenêtre de téléchargement apparaît. Je sais que lorsque le navigateur ne peut pas afficher le contenu en ligne, il va forcer un téléchargement de toute façon, mais ce sont des images PNG et GIF qui s'affichent dans le navigateur bien autrement. Dans IE il ne force pas un téléchargement mais il affiche l'image en ASCII.
Si je commente l'ensemble du cas de l'image, FF et Chrome affichent tous deux l'ASCII mais pas l'image.
Je pensais que la définition du type de contenu permettrait à FF et à Chrome d'afficher l'image réelle, et permettrait également à l'emplacement d'être utilisé comme src.
Le javascript et css montre bien sûr.
Quelqu'un a-t-il eu des idées sur la manière de montrer les images correctement?
Oh qui l'a fixé. Merci! :) – hamstar