Поиск…
параметры
Param / Функция | Описание |
---|---|
файл загружен | имя файла <input> |
$ sampleName | также может быть динамически созданной строкой или именем файла, загруженного пользователем |
APP_PATH () | является помощником Laravel для обеспечения абсолютного пути к приложению |
getCLientOriginalExtension () | Laravel для получения расширения файла, загруженного пользователем, как это было на машине пользователя |
Создание временных файлов имен файлов для файлов, загружаемых пользователями.
Ниже не будет работать на 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);
Он выдает ошибку, например «Невозможно переместить файл в / путь ...»
Зачем? - Это отлично работает на сервере Ubuntu
Причина в том, что в Windows colon ':'
не разрешено в имени файла, где это разрешено в linux. Это такая маленькая вещь, что мы можем не заметить ее заранее и постоянно задаваться вопросом, почему код, который хорошо работает на Ubuntu (Linux), не работает?
Наша первая догадка состояла бы в том, чтобы проверить права доступа к файлам и тому подобное, но мы не можем заметить, что colon ':'
является виновником здесь.
Поэтому, чтобы загружать файлы в Windows, не используйте colon':'
при создании временных файлов имен , вместо этого сделайте следующее:
$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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow