web-dev-qa-db-fra.com

Afficher l'image à l'aide de file_get_contents dans une fenêtre contextuelle

J'essaie d'afficher une image dans une fenêtre contextuelle à l'aide de la fonction file_get_contents et d'une instruction echo.

Voici le code que j'ai dans la première vue

<a href='javascript:window.open("index.php?option=com_jsmdownload&view=request&tmpl=component&layout=showimage&img=icon-36-ldpi.png", "Image View", "toolbar=no, location=no, width=400, height=400")'>Click</a>

Ci-dessous le code de ma deuxième mise en page dans la même vue

$image = JURI::base().DS.'files'.DS.'images'.DS.'icon.png';
//echo $image;
$content = file_get_contents($image); 
header('Content-Type: image/png');
echo $content; exit();

Lorsque je clique sur l'ancre 'Cliquez' dans la première vue, la fenêtre contextuelle s'ouvre et les ordures à l'intérieur s'affichent.

enter image description here

Le chemin de l'image est correct. Si je navigue dans une autre URL du navigateur, il affiche l'image.

Je ne sais pas ce qui me manque. Quelqu'un peut-il s'il vous plaît aider sur ce point?

5
Malaiselvan

Je suis d'accord avec Jeremy, vous pouvez simplement utiliser une balise <img> Et insérer le nom du fichier en utilisant PHP.

Toutefois, si, pour une raison quelconque, vous souhaitez lire le fichier à l'aide de PHP, essayez d'utiliser readfile(). En outre, vous pouvez utiliser getimagesize () pour obtenir le type MIME correct et l'insérer de manière dynamique. De cette façon, vous n'êtes pas limité à utiliser un seul type de fichier:

$image = JURI::base().DS.'files'.DS.'images'.DS.'icon.png';
$imginfo = getimagesize($image);
header("Content-type: ".$imginfo['mime']);
readfile($image);

J'espère que ça t'as aidé.

5
johanpw

Définir l'en-tête et essayer de traiter directement l'image est vraiment inutile. Cela produira le résultat que vous recherchez:

Votre deuxième bloc de code devrait être comme suit

$input = JFactory::getApplication()->input;
$layout = $input->get('layout');
If (isset($layout) && $layout == 'show image') {
$image = JURI::base().'files/images/icon.png';
printf('<img src="%s" />', $images);

}

4
Jeremy Proffitt