Sök…
parametrar
Param / funktion | Beskrivning |
---|---|
filuppladdning | namnet på fältet <input> |
$ sampleName | kan också vara en dynamisk genererad sträng eller namnet på filen som laddats upp av användaren |
app_path () | är Laravel-hjälper för att ge den absoluta vägen till applikationen |
getCLientOriginalExtension () | Laravel-omslaget för att hämta filtillägget som laddats upp av användaren som på användarmaskinen |
Genererar tidsstämplade filnamn för filer som laddats upp av användare.
Nedan fungerar inte på en Windows-maskin
$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);
Det kommer att kasta ett fel som "Kunde inte flytta fil till / sökväg ..."
Varför? - Det här fungerar perfekt på en Ubuntu-server
Anledningen är att på Windows colon ':'
inte är tillåtet i ett filnamn där det är tillåtet på Linux. Det här är en så liten sak att vi kanske inte märker det på förhand och fortsätter att undra att varför en kod som fungerar bra på Ubuntu (Linux) inte fungerar?
Vår första ansträngning skulle vara att kontrollera filtillstånd och sådant, men vi kanske inte märker att colon ':'
är den skyldige här.
Så för att ladda upp filer på Windows, använd inte colon':'
medan du skapar tidsstämplade filnamn , gör istället något liknande nedan:
$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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow