Laravel 4.2输入文件空
Posted
技术标签:
【中文标题】Laravel 4.2输入文件空【英文标题】:Laravel 4.2 Input File Null 【发布时间】:2015-11-16 17:06:57 【问题描述】:我有结合 Laravel 4.2 和 Ajax 上传多个图像文件的表单。但是上传图片时,输入文件总是NULL。我该如何解决?
这是我的上传表单。
Form::open(array('url' => route('member.font.upload.images'), 'files'=>true, 'id'=>'upload-images', 'method'=> 'post'))
Form::file('image[]', array('multiple'=>true, 'id'=>'images'))
<input type="hidden" name="font" value=" $font->id ">
Form::close()
并在控制器中上传过程。
public function uploadImages()
$rules = array(
'font' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
return Response::json(['success' => false, 'message' => 'Failed upload image']);
else
if(Input::hasFile('image'))
$images = Input::file('image');
foreach($images as $image)
$imagename = time() . $image->getClientOriginalName();
$upload = $image->move('images/', $imagename);
if($upload)
$data = new Image;
$data->font_id = Input::get('font');
$data->name = $imagename;
$data->save();
return Response::json(['success' => true, 'message' => 'Success']);
else
return Response::json(['success' => false, 'message' => 'File not found']);
然后是 Ajax 进程。
$('#images').change(function(e)
e.preventDefault();
$.ajax(
url: $('#upload-images').attr('action'),
type: 'post',
dataType: 'json',
data: $('#upload-images').serialize(),
beforeSubmit: function()
$('.add-images').removeClass('enabled').addClass('uploading');
,
success: function(data)
$('.add-images').removeClass('uploading').addClass('enabled');
,
error: function()
);
);
【问题讨论】:
使用serialize()
不会上传文件。用ajax上传文件不难研究
【参考方案1】:
您可能需要定义表单的编码类型。
Form::open(array('url' => route('member.font.upload.images'), 'files'=>true, 'id'=>'upload-images', 'method'=> 'post', 'enctype' => "multipart/form-data"))
您可以使用此W3Schools doc 了解更多详情。
【讨论】:
【参考方案2】:更改此部分:
Form::open(array('url' => route('member.font.upload.images'), 'files'=>true, 'id'=>'upload-images', 'method'=> 'post'))
收件人:
Form::open(array('route' => 'member.font.upload.images', 'files'=>true, 'id'=>'upload-images', 'method'=> 'post'))
【讨论】:
这是我的路线 Route::post('upload-images', array('as'=>'member.font.upload.images', 'uses'=>'MemberController@uploadImages') ); 首先没有解决没有文件上传的问题 也许问题是你的ajax $('#upload-images').serialize() 试试$('form').serialize(),以上是关于Laravel 4.2输入文件空的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 4.2:Ollieread MultiAuth 提醒问题
Laravel 4.2 services.json 文件在主机根目录下创建