我正在使用Laravel 5.0进行图片上传我正在使用dropzone.js。实际上文件上传到文件夹和数据库,但它抛出错误,如
在非对象上调用成员函数getClientOriginalName() 关于邮政方法。
我哪里出错?
查看文件,
<form method="POST" class="dropzone dz-clickable" id="productDropzone" action="{{url()}}/cms/website/pages/upload_files" enctype="multipart/form-data">
<div class="dz-default dz-message">
<span>Drop files here to upload</span>
</div>
<input name="_token" type="hidden" value="{{ csrf_token() }}">
<input type="submit" value="Upload" id="submit_all"/>
</form>
以下是我的js,
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("form#productDropzone", {
paramName : 'file',
maxFilesize: 3, // MB
maxFiles: 3,
autoProcessQueue: false,
addRemoveLinks: true,
init: function() {
this.on("addedfile", function(file) { fileupload_flag = 1; });
this.on("complete", function(file) { fileupload_flag = 0; });
},
accept: function(file, done)
{
var re = /(?:\.([^.]+))?$/;
var ext = re.exec(file.name)[1];
ext = ext.toUpperCase();
if ( ext == "JPG" || ext == "JPEG" || ext == "PNG" || ext == "GIF" || ext == "BMP")
{
done();
}else {
done("Please select only supported picture files.");
}
},
success: function( file, response ) {
obj = JSON.parse(response);
file.previewElement.querySelector("file").src = obj.src;
// alert(obj.src);return false;
}
});
$('#submit_all').click(function(){
myDropzone.processQueue();
});
控制器功能,
$com_id = Auth::user()->company_id;
$file = Request::file('file');
$destinationPath = public_path() . '/images/section/';
$filename = strtolower($file->getClientOriginalName());
$upload_success = $file->move($destinationPath, $filename);
if ($upload_success) {
$upload = new Cms_banner_master();
$upload->product_banner = json_encode($filename);
$upload->company_id = $com_id;
$upload->home_banner ="1";
$upload->save();
return Response::json(array($fileName));
} else
{
return Response::json('error', 400);
}
答案 0 :(得分:-1)
如果要防止错误发生,可以先在文件上添加一些有效性检查。
例如使用 isValid 方法
更新:我也添加了 hasFile 方法。
if(Request::hasFile('file') {
$file = Request::file('file');
if($file->isValid()) {
$destinationPath = public_path() . '/images/section/';
$filename = strtolower($file->getClientOriginalName());
$upload_success = $file->move($destinationPath, $filename);
if ($upload_success) {
...
}
}
} else {
return Response::json('No file uploaded', 409);
}
我还会为上传的文件生成一个新名称,这样你就不需要getClientOriginalName:
$filename = $com_id.'_'.date('YmdHis')'.'.$file->guessExtension();
本着#34;永远不要相信用户&#34;而不是让他们选择&#39;您将在服务器上保存的文件中的文件名。