2015-06-11 2 views
0

Проблема: не удалось просмотреть данные о загрузке файла. Getting нуль вернулсяНевозможно просмотреть данные изображения при отправке формы

Im пытаясь разместить объявление, и я хотел бы видеть данные, которые я отправляю

Так что моя форма выглядит так:

{!! Form::open(['data-remote', 'class' => 'form-vertical', 'route' => 'dashboard.ad.create', 'files' => true, 'id' => 'createAd']) !!} 

      <div class="cover_photo"> 
       {!! Form::label('cover_photo', 'Cover Photo') !!} 

       {!! Form::file('cover_photo') !!} 
      </div> 

{!! Form::close() !!} 

Это поле с вопросом, поле формы файл с именем cover_photo

Мой класс запрос форма имеет следующий в массиве правил

'cover_photo' => 'image', 

Я использую ajax для отправки формы. Все, что я делаю в моем контроллере, -

public function postStoreAd(PostAnAddRequest $request) { 
    dd($request->all()); 
} 

Странно, что я получаю все данные полей формы. За исключением cover_photo В самом деле, когда я пытаюсь сделать следующее, я получаю нулевую:

dd($request->file('cover_photo')); // return null 

Я гарантировал, что я использую

'files' => true, // In my Form::open() 

Пожалуйста, помогите и спасибо :)

+0

вы пробовали отправкой формы без AJAX? надеюсь, что вы знаете, что запрос ajax не поддерживает загрузку файлов, кроме того, если вы используете iframe или какие-либо другие методы? – Digitlimit

+0

Теперь я получаю данные без ajax. Я не уверен, как реализовать загрузку файла ajax. Спасибо, что помогли – arkhamDev

+0

Да. есть много плагинов jquery, которые вы могли бы использовать. просмотрите их, https://laracasts.com/discuss/channels/general-discussion/l5-ajax-file-upload, http://stackoverflow.com/questions/25441893/laravel-uploading-file-using-ajax – Digitlimit

ответ

0

Так что в моем jquery я использовал data.serialize(), который я узнал, не будет работать благодаря этому article

С помощью этой формы реализации, я был в состоянии получить данные, необходимые

я
var form = $(this); 

var formdata = new FormData(form[0]); //form.serialize() wont work 

form.find('div.alert').remove(); 

e.preventDefault(); 

var action = $(this).attr('action'); 

var method = $('input[name=_method]').val() || 'POST'; 

$.ajax({ 
    type: method, 
    action: action, 
    data: formdata, //form.serialize() wont work 
    processData: false, // You need this 
    contentType: false, // You need this 
    dataType: 'json', 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function(data) { 
     var errors = data.responseJSON; 

     $.each(errors, function(key, value) { 
      console.log(key + ' - ' + value); 
      $('#' + key).after('<div class="alert alert-danger">' + value + '</div>'); 
     }); 

    } 

});