Szukaj…
Parametry
Param / Function | Opis |
---|---|
Udostępnianie pliku | nazwa pola pliku <input> |
$ sampleName | może być również dynamicznie generowany ciąg znaków lub nazwa pliku przesłanego przez użytkownika |
app_path () | jest pomocnikiem Laravela, który zapewnia bezwzględną ścieżkę do aplikacji |
getCLientOriginalExtension () | Opakowanie Laravel, aby pobrać rozszerzenie pliku przesłanego przez użytkownika tak, jak było na komputerze użytkownika |
Generowanie sygnatur czasowych nazw plików przesyłanych przez użytkowników.
Poniżej nie będzie działać na komputerze z systemem 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);
Zgłasza błąd typu „Nie można przenieść pliku do / ścieżki ...”
Dlaczego? - Działa to doskonale na serwerze Ubuntu
Powodem jest to, że w colon ':'
systemu Windows colon ':'
nie jest dozwolone w nazwie pliku, ponieważ jest to dozwolone w systemie Linux. Jest to tak mała rzecz, że możemy jej nie zauważyć i zastanawiać się, dlaczego kod działający dobrze na Ubuntu (Linux) nie działa?
Naszym pierwszym przeczuciem byłoby sprawdzenie uprawnień do plików i tego typu rzeczy, ale możemy nie zauważyć, że przyczyną jest colon ':'
.
Aby więc przesłać pliki do systemu Windows, nie używaj colon':'
podczas generowania nazw plików ze znacznikami czasu , zamiast tego wykonaj coś takiego:
$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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow