Zoeken…
parameters
Param / functie | Beschrijving |
---|---|
bestand upload | naam van het veld <input> |
$ sampleName | kan ook een dynamisch gegenereerde string zijn of de naam van het bestand dat door de gebruiker is geüpload |
app_path () | is Laravel-helper om het absolute pad naar de applicatie te bieden |
getCLientOriginalExtension () | Laravel-wrapper om de extensie op te halen van het bestand dat door de gebruiker is geüpload zoals het op de gebruikersmachine was |
Tijdstempelbestandsnamen genereren voor bestanden die door gebruikers zijn geüpload.
Hieronder werkt niet op een Windows-machine
$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);
Het geeft een foutmelding als "Kon bestand niet verplaatsen naar / pad ..."
Waarom? - Dit werkt perfect op een Ubuntu-server
De reden is dat op Windows colon ':'
niet is toegestaan in een bestandsnaam waar het is toegestaan op linux. Dit is zo klein dat we het misschien niet van tevoren opmerken en ons blijven afvragen waarom een code die goed werkt op Ubuntu (Linux) niet werkt?
Onze eerste poging zou zijn om de bestandsrechten en dergelijke te controleren, maar we kunnen die colon ':'
niet opmerken colon ':'
is hier de dader.
Dus om bestanden op Windows te uploaden, gebruik geen colon':'
tijdens het genereren van tijdstempel bestandsnamen , doe in plaats daarvan iets als hieronder:
$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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow