Suche…


Parameter

Param / Funktion Beschreibung
Datei-Upload Name der Datei <input>
$ sampleName könnte auch eine dynamisch generierte Zeichenfolge oder der Name der vom Benutzer hochgeladenen Datei sein
app_path () ist der Laravel-Helfer, um den absoluten Pfad zur Anwendung anzugeben
getCLientOriginalExtension () Laravel-Wrapper, um die Erweiterung der vom Benutzer hochgeladenen Datei wie auf dem Benutzercomputer abzurufen

Zeitstempel-Dateinamen für von Benutzern hochgeladene Dateien generieren.

Unten funktioniert auf einem Windows-Computer nicht

$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);  

Es wird ein Fehler wie "Datei konnte nicht nach / Pfad ... verschoben werden" ausgegeben.

Warum? - Dies funktioniert perfekt auf einem Ubuntu-Server
Der Grund ist, dass unter Windows der colon ':' in einem Dateinamen nicht zulässig ist, während dies unter Linux zulässig ist. Dies ist eine so kleine Sache, dass wir es vielleicht nicht im Voraus bemerken und sich immer wieder fragen, warum ein Code, der unter Ubuntu (Linux) gut läuft, nicht funktioniert?
Unsere erste Vermutung wäre, die Dateiberechtigungen und ähnliches zu überprüfen, aber wir bemerken vielleicht nicht, dass der colon ':' hier der Täter ist.
Um Dateien unter Windows hochzuladen, verwenden Sie keinen colon':' während Sie mit einem Zeitstempel versehene Dateinamen generieren. Gehen Sie stattdessen wie folgt vor:

$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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow