2016-12-08 4 views
1

У меня есть приложение Laravel 5.3, которое имеет форму, в которой пользователи могут загружать несколько файлов, используя несколько полей . Форма работает с тем, что файлы могут быть загружены и перемещены в destinationPath, как я ожидаю, но я не могу изменить каждое из значений файлов «имя_файла». Он сохраняет значение имени файла как php **. Tmp.Как установить индивидуальные имена файлов загрузки?

В этом случае я использую foreach в своем контроллере;

 $files = $request->files; 

    foreach($files as $file){ 
     $destinationPath = 'images/forms'; // upload path 
     $filename = $file->getClientOriginalName(); // get image name 
     $file->move($destinationPath, $filename); // uploading file to given path 
     $file->filename = $filename; 
    } 

Если I dd($filename) и dd($file->filename) внутри Еогеасп я получаю значение (оригинальное название) Я ищу, но если я dd($files) вне этого Еогеасп, имя файла задается как значение температуры PHP.

Что мне не хватает? Благодарю.

EDIT

Файл объект выглядит следующим образом;

-test: ложные

-originalName: "sample_header_1280.png"

-mimeType: "изображение/PNG"

-размер: 51038

-ошибка: 0

Путь: "C: \ xampp \ tmp"

имя файла: "php7240.tmp"

базовое имя: "php7240.tmp"

путь: "C: \ XAMPP \ TMP \ php7240.tmp"

расширение: "TMP"

Realpath: «C: \ XAMPP \ tmp \ php7240.tmp "

Я пытаюсь сохранить исходное имя в db, но, похоже, по умолчанию сохраняет имя файла.

+0

Почему вы используете последнюю строку внутри foreach? –

+0

Я пытаюсь установить значение имени файла. См. Мое редактирование для деталей. – RushVan

ответ

0

Выключается с использованием foreach для Input :: file, здесь он не подходит. Если вы загружаете несколько файлов из одного поля - тогда вы должны использовать foreach для цикла, перемещения и сохранения.

Чтобы загрузить файлы из нескольких файлов входы на одной и той же форме, все, что вам нужно сделать, это обрабатывать каждый вход отдельно - как вы могли бы с любой другой формой.

В моем примере я сделал это в своем контроллере;

$data['image1'] = Input::file('image1')->getClientOriginalName(); 
    Input::file('image1')->move($destinationPath, $data['image1']); 

    $data['image2'] = Input::file('image2')->getClientOriginalName(); 
    Input::file('image2')->move($destinationPath, $data['image2']); 

Не уверен, что это лучший подход (всегда есть другой способ), но это сработало для меня.

Смежные вопросы