
get con parametros que contienen caracteres especiales
Publicado por TCOS (2 intervenciones) el 14/02/2024 12:29:33
Hola a todos.
Soy nuevo en Laravel 10 y tengo una duda. Estoy creando un controlador para archivos de imagen protegidos.
He creado un nuevo 'disco' en filesystems.php.
He creado la carpeta y les he puesto subcarpetas y archivos.
He creado el controlador con 2 metodo 'viewFile' i 'viewFile1'.
He creado las rutas GET en routes/web.php.
He creado la vista con el codigo blade.
Bien, si le paso como parametro el nombre del archivo 'iconMale.png' .... funciona bien.
Pero si quiero pasarle una ruta como parametro: 'media2/users/avatar/iconMale.png no funciona
Bien, ya se que no se puede usar '/' en el parametro del GET. En el POST si, y me funciona, pero no se peude utilizar una ruta POST en el src de una imagen .... o yo no se hacerlo al menos.
La primera solucion ha sido substituir '/' por '\' en la ruta .... y funciona
La segunda ha sido con urlencode() ... pero esta no funciona, siempre devuelve 404 y no lo entiendo.
Alguna idea?
Gracias.
RUTAS:
VISTA:
nota: $uriFile = 'images/test/iconMale.png' que esta en la carpeta correspondiente del disco privado
CONTROLADOR:

Soy nuevo en Laravel 10 y tengo una duda. Estoy creando un controlador para archivos de imagen protegidos.
He creado un nuevo 'disco' en filesystems.php.
He creado la carpeta y les he puesto subcarpetas y archivos.
He creado el controlador con 2 metodo 'viewFile' i 'viewFile1'.
He creado las rutas GET en routes/web.php.
He creado la vista con el codigo blade.
Bien, si le paso como parametro el nombre del archivo 'iconMale.png' .... funciona bien.
Pero si quiero pasarle una ruta como parametro: 'media2/users/avatar/iconMale.png no funciona
Bien, ya se que no se puede usar '/' en el parametro del GET. En el POST si, y me funciona, pero no se peude utilizar una ruta POST en el src de una imagen .... o yo no se hacerlo al menos.
La primera solucion ha sido substituir '/' por '\' en la ruta .... y funciona
La segunda ha sido con urlencode() ... pero esta no funciona, siempre devuelve 404 y no lo entiendo.
Alguna idea?
Gracias.
RUTAS:
1
2
Route::get( 'privateView/{uriFile}' ,[privateFilesController::class,'viewFile']) ->name('privateFiles.view');
Route::get( 'privateView1/{uriFile}' ,[privateFilesController::class,'viewFile1']) ->name('privateFiles.view1');
VISTA:
nota: $uriFile = 'images/test/iconMale.png' que esta en la carpeta correspondiente del disco privado
1
2
<img src="{{ route('privateFiles.view' ,['uriFile'=>str_replace("/","\\",$uriFile)]) }}" alt="{{$uriFile}}" ><br>
<img src="{{ route('privateFiles.view1' ,['uriFile'=>urlencode($uriFile)]) }}" alt="{{$uriFile}}" ><br>
CONTROLADOR:
1
2
3
4
5
6
7
8
9
10
public function viewFile($uriFile){
$uriFile = str_replace("\\","/",$uriFile);
$filepath = storage_path("app/private/" . $uriFile);
return response()->file($filepath);
}
public function viewFile1($uriFile){
$uriFile = urldecode($uriFile); // de manera automatica???
$filepath = storage_path("app/private/" . $uriFile);
return response()->file($filepath);
}

Valora esta pregunta


0