2016-08-15 3 views
1

Когда я пытаюсь загрузить файл следующим образом:Laravel 5.2 Загрузка файла

$name = $img->getClientOriginalName(); 
$fullPath = Product::getUploadPath(); // Returns public_path(); with custom directory appended 
$uploaded = $img->move($fullPath, $name); 

Я получаю ошибку ниже:

Could not move the file 
"/private/var/folders/1l/fxl7spqj2p113fpffm3k0sy00000gn/T/phpIgpWGy" to 
"/dir/subdir/subsubdir/subsubdir/public/backend/images/products/pic.jpg"() 

Для interestsake, я построил весь путь разрешить для изображения, и передал это как аргумент метода move(). Память служила тем, что она работала ранее.

$uploaded = $img->move($fullPath.'/'.$name); 

Никаких исключений не выбрасывается, однако, загруженный файл, теперь становится каталогом:

"/dir/subdir/subsubdir/subsubdir/public/backend/images/products/pic.jpg/" 

Я очень близко к вождения кулаком через мой экран.

+0

Это может быть лишение сна, но я также вполне уверен, что этот код работал ранее, без каких-либо известных проблем. Недавно я установил плагин вмешательства для изменения размеров изображений, однако при отладке я удалил плагин из моего ядра приложения. –

+1

Не копаясь слишком далеко, вы проверяли разрешения на целевой каталог? Метод 'move()' класса UploadedFile вызывает функцию 'move_uploaded_file()' PHP. Они подавляют ошибки из этого вызова, но бросают «FileException» с этим пользовательским сообщением, которое вы видите. Файл, созданный как каталог со второй попыткой, имеет смысл, поскольку первым параметром является целевой каталог, а второе имя - это имя файла - без имени файла, разрешен только каталог. – stratedge

+0

Возможно ли, что в случае не существующего каталога и laravel, создающего путь при вызове 'move()', что данный каталог может иметь недостаточные разрешения? Кроме того, когда он создает каталог, каталог не пуст, кажется, является временным PHP, находящимся внутри. –

ответ

1

Может быть проблема с правами доступа - пользователь, выполняющий PHP-процесс, должен иметь доступ на запись в каталог, в котором будет сохранен файл. Если вы можете вставить chmod'ing в каталог до 777 для тестирования, это, по крайней мере, обеспечит немедленное да или нет для возможности разрешений.

Кроме того, убедитесь, что каталог, в который файл должен быть перемещен, существует. Метод UploadedFile::move() от Symfony возвращается к функции PHP move_uploaded_file(), которая, согласно комментарию к документации, не создает отсутствующие каталоги при перемещении файла.

Когда дело доходит до загрузки файлов, мы все были там раньше. Может быть безумие.

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