1
votes

Empêcher la fonction php de lame d'encoder des symboles

J'ai un appel d'itinéraire dans mon code pour afficher une image dans un dossier qui a quelques sous-dossiers basés sur des catégories. Ceci est mon appel d'itinéraire dans datatable pour afficher l'image:

Route::get('image/{foldername}/{filename}','getImageController@getImage')

J'ai eu une erreur car le '/' on 'folder / subfolder1' change en '% 2f', comment éviter cela de se produire ?? je m'attends à ce que l'API renvoie un lien qui ressemble à ceci:

public function getImage($foldername,$filename){
$path = ['UPLOAD_PATH'].'/image';
return Image::make($path.'/'.$foldername'/'.$filename)->response();
}

à la place j'ai obtenu:

<img id="pic" src="localhost:8000/api/image/folder%2fsubfolder1/image.jpg/>

le contrôleur getImage ressemble à quelque chose comme ceci:

<img id="pic" src="localhost:8000/api/image/folder/subfolder1/image.jpg/>

voici l'API de la route:

<img id="pic" src="{{url('api/image',['folder/subfolder1',$data->image]}}" style="width:150;height:150"/>


0 commentaires

3 Réponses :


1
votes

Vous n'avez pas besoin d'échapper à votre propre route interne. Utilisez la lame non échappée {!! !!}} à la place:

<img id="pic" src="{!! url('api/image',['folder/subfolder1',$data->image] !!}" ... />

Je voudrais peut-être aussi rendre le routage un peu plus simple - pourquoi ne pas simplement utiliser le api / image / folder / subfolder1 /'.$ data- > image ou similaire?


4 commentaires

j'ai toujours le même résultat


Même si vous utilisez l'itinéraire différent que j'ai mis à la fin de la réponse? Aurait dû bien fonctionner.


Les routes sont censées gérer les images dans un dossier sans aucun sous-dossier, cela fonctionne bien pour url ('api / image', ['foldername', $ data-> image]) . il n'y a qu'un seul dossier contenant 3 sous-dossiers, c'est là que ce problème est apparu


btw @Jesus solution fonctionne, le lien est correct,% 2f est parti, mais les images ne se chargent toujours pas, cela peut avoir quelque chose à voir avec le contrôleur



2
votes

Si vous attendez ce résultat sous

<img id="pic" src="{{url('api/image/folder/subfolder1/' . $data->image }}" style="width:150;height:150"/>

Alors vous pouvez essayer ceci ci-dessous.

<img id="pic" src="localhost:8000/api/image/folder/subfolder1/image.jpg" />

Faites-moi savoir si cela vous aide.

/ p>


1 commentaires

mon api de route ressemble à ceci monsieur, Route :: get ('image / {nom de dossier} / {nom de fichier}', 'getImageControll‌ er @ getImage') . Je pense que quelque chose ne va pas avec la façon dont le contrôleur gère les liens, cela fonctionne bien avec les répertoires qui n'ont pas de sous-dossiers



1
votes

Vous pouvez utiliser route à la place de l'url lors de l'envoi de la requête. L'URL sera encodée en tant que caractère spécial.

essayez d'utiliser ce code:

<img id="pic" src="{{route('public/image/')}$data->image}}">


0 commentaires