Поиск…


параметры

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