Buscar..
Parámetros
Parámetro / Función | Descripción |
---|---|
Subir archivo | nombre del archivo <input> campo |
$ sampleName | También podría ser una cadena generada dinámicamente o el nombre del archivo cargado por el usuario |
app_path () | Laravel es el ayudante para proporcionar la ruta absoluta a la aplicación. |
getCLientOriginalExtension () | Laravel wrapper para recuperar la extensión del archivo cargado por el usuario tal como estaba en la máquina del usuario |
Generación de nombres de archivo con marca de tiempo para los archivos cargados por los usuarios.
A continuación no funcionará en una máquina con Windows
$file = $request->file('file_upload');
$sampleName = 'UserUpload';
$destination = app_path() . '/myStorage/';
$fileName = $sampleName . '-' . date('Y-m-d-H:i:s') . '.' .
$file->getClientOriginalExtension();
$file->move($destination, $fileName);
Se lanzará un error como "No se pudo mover el archivo a / ruta ..."
¿Por qué? - Esto funciona perfectamente en un servidor Ubuntu.
La razón es que en el colon ':'
Windows colon ':'
no está permitido en un nombre de archivo como está permitido en Linux. Esto es algo tan pequeño que no lo notamos por adelantado y nos preguntamos por qué un código que funciona bien en Ubuntu (Linux) no funciona.
Nuestro primer presentimiento sería revisar los permisos de los archivos y cosas así, pero es posible que no notemos que los colon ':'
son el culpable aquí.
Entonces, para cargar archivos en Windows, no use los colon':'
mientras genera nombres de archivos con marca de tiempo , en lugar de hacer algo como a continuación:
$filename = $sampleName . '-' . date('Y-m-d-H_i_s') . '.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18-11_25_43.xlsx
OR
$filename = $sampleName . '-' .date('Y-m-d H i s') . '.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18 11 25 43.xlsx
OR
$filename = $sampleName . '-'.date('Y-m-d_g-i-A').'.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18_11-25-AM.xlsx