Ricerca…
Parametri
Param / Funzione | Descrizione |
---|---|
upload di file | nome del campo <input> |
$ samplename | potrebbe anche essere una stringa generata dinamicamente o il nome del file caricato dall'utente |
app_path () | è l'helper di Laravel per fornire il percorso assoluto all'applicazione |
getCLientOriginalExtension () | Laravel wrapper per recuperare l'estensione del file caricato dall'utente come era sul computer dell'utente |
Generazione di nomi di file con data e ora per i file caricati dagli utenti.
Di seguito non funzionerà su una macchina 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);
Viene generato un errore come "Impossibile spostare il file in / percorso ..."
Perché? - Funziona perfettamente su un server Ubuntu
Il motivo è che sui colon ':'
Windows colon ':'
non è permesso in un nome file dove è consentito su linux. Questa è una cosa così piccola che potremmo non notarlo in anticipo e continuare a chiederci perché un codice che gira bene su Ubuntu (Linux) non funziona?
La nostra prima impressione sarebbe quella di controllare i permessi del file e cose del genere, ma potremmo non notare che colon ':'
è il colpevole qui.
Quindi, per caricare file su Windows, non utilizzare i colon':'
durante la generazione di nomi di file con data e ora , invece di fare qualcosa di simile di seguito:
$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