1.使用环境是服务器apache,PHP7.0,后端框架是laravel5.5,前端框架是layui
2.问题:在项目中上传一个13M的pdf文件抛出错误:413 Payload Too Large。
首先,我修改了php.ini中的post_max_size发现没有效果,还是报错。
接着,查看报错代码:
进入ValidatePostSize这个方法里,终于找到了报错原因
原因是laravel中无法读取post_max_size这个值,我dd($max)一直是8M,所以我手动设定了。
这个上传的问题暂时解决,但是紧接着发现了第二个问题:大文件上传时后端无法获取前台传递的值
(小文件是可以正常获取到值的,这里我就不贴图了,图太多了)
下面我贴出代码
前端:
//附件上传
var uploadInst = upload.render({
elem: '#attachment'
,url: '/oa3/public/index.php/admin/engineering/certificate_upload'
,accept: 'file'
,exts:'pdf'
,size:'20480'
,data: {
code: function(){
return $("input[name='c_number']").val();
}
}
,done: function(res){
//上传成功
if(res.code == 0){
layer.msg(res.msg);
$("input[name='attachment']").val(res.data);
//上传失败
}else{
layer.msg(res.msg);
}
}
});
后端:
//上传附件
public function certificate_upload(Request $request){
//先获取证书编号
$code = $request->input('code');
//有证书编号
if($code){
$file = $request->file();
$file = $file['file'];
if($file->isValid()){
//后缀名
$ext = $file ->getClientOriginalExtension();
//重命名(证书编号)
$filename = $code.'.'.$ext;
//保存
$save_file = $file -> move(public_path().'\uploads\certificate',$filename);
$save_path = 'uploads/certificate/'.$filename;
return $data = ['code'=>0,'data'=>$save_path,'msg'=>'上传成功'];
}
}else{
return $data = ['code'=>1,'msg'=>'请先填写证书编号'];
}
}
大神帮忙看看是哪里的错误?万分感谢!