2015-02-03 2 views
0

У меня есть этот основной вид:Невозможно загрузить изображение в Laravel 4

{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'), 'files' => true,))}} 
{{ Form::file('photo') }} 
<br /> 
{{ Form::submit('Regístrarme', array("class" => "button expand round")) }} 
{{ Form::close() }} 

Мой маршрут находится внутри 2 групп: before=>Auth и before=>csrf

Route::post('/accont/changeProfilePic', array(
    'as' => 'post-account-changeProfilePic', 
    'uses' => '[email protected]' 
)); 

В мой контроллер, я просто сбросить свою переменную см. то, что я получил:

public function postChangeProfilePic(){ 
    $input = Input::all(); 
    var_dump($input); 
} 

Это ошибки, которые я получаю:

1- Освещение \ Сессия \ Ошибка TokenMismatchException.

Это из-за фильтра csrf, но поскольку я использую лезвие, токен на самом деле есть. Кроме того, если я удалю атрибут имени из ввода файла, эта ошибка не будет отображаться.

До сих пор я решил поместить маршрут за пределы фильтра csrf, пока не пойму, что происходит.

2- После размещения маршрута из фильтра csrf и попробуйте отобразить все входы, я получаю массив null.

Я решил добавить новое текстовое поле, и если я не выберем фотографию/рис и не отправлю форму, то она выведет на экран все входы, но, конечно, файл пуст/ноль.

Любое представление о том, что я делаю неправильно?

ответ

0

В вашей форме попробуйте изменить это массив («перед» => «CSRF»), функция()

{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'), 'before' => 'csrf'), 'files' => true,))}} 

Маркер CSRF должен быть там по умолчанию, так как вы делаете запрос POST, поэтому не уверен, где там проблема.

http://laravel.com/docs/4.2/html#csrf-protection

для ввода попробовать

public function postChangeProfilePic(){ 

    if (Input::hasFile('photo')) 
    { 
     $input= Input::file('photo'); 
     var_dump($input); 
    } 
} 

http://laravel.com/docs/4.2/requests#files

+0

Спасибо за ваш ответ Крис. Проблема все еще остается. У меня есть несколько маршрутов внутри такой группы: Route :: group (array ('before' => 'csrf'), function() { // Маршруты здесь ... }); И да, токен помещается в форму каркасом. Массив сообщений сохраняет «проводку» как null ...так что dunno, что делать – carlosbvz

+0

Хорошо, не могли бы вы добавить еще одно поле ввода формы для меня. Просто текстовый ввод и подтвердите, что ничего не вывешено из этого ввода? –

+0

Действительно, я сделал. Я добавил текстовое поле в форму, и когда я отправляю его, массив отображает все поля (токен + текстовое поле + файл), но только если входной файл пуст. Если входной файл не пуст, он выводит «null». – carlosbvz

0

Хорошо, я думаю, что это может быть этот

Смените

{{ Form::open(array('url' => URL::route('post-account-changeProfilePic'), 
         'files' => true,))}} 

к

{{ Form::open(array('route' => 'post-account-changeProfilePic', 
         'files' => true)) }} 

Я не думаю, что вам нужно «» в конце истинных либо.

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