编写后台管理系统的时候,需要上传图片或别的数据,但是传输数据出错,用layui自带的文件上传图片,以及表单数据,但图片传输的时候会报错。
问题描述
客户端页面上显示“请求接口上传异常”。后台显示Current request is not a multipart request.
问题解释:出现此种错误的原因是传输数据格式错误。
我的html的javascript部分:包括ajax传输部分和文件上传部分
原因分析:
上传接口问题分析:是因为layui文件上传的数据要求上传的接口即所填URL()必须是JSON格式,这个在layui官网有写出图片/文件上传模块文档 - Layui (swimafish.com)
设定一个 URL 地址给 url 参数,用来告诉 upload 模块的服务端上传接口。像你平时使用Ajax一样。如:
upload.render({
elem: '#id'
,url: '/api/upload/' //必填项
,method: '' //可选项。HTTP类型,默认post
,data: {} //可选项。额外的参数,如:{id: 123, abc: 'xxx'}
});
该接口返回的相应信息(response)必须是一个标准的 JSON 格式,如:
{
"code": 0
,"msg": ""
,"data": {
"src": "http://layui.swimafish.com/123.jpg"
}
}
注意1:你不一定非得按照上述格式返回,只要是合法的 JSON 字符即可。其响应信息会转化成JS对象传递给 done 回调。
注意2:如果上传后,出现文件下载框(一般为ie下),那么你需要在服务端对response的header设置 Content-Type: text/html
这个文档看不太懂哈哈哈,没关系。简单来说上传的这个格式由在网页上查看请求头,一般是由Content-Type设置,Content-Type:application/javascript是不行的,我这里查看到引入的layui.js和jquery.js的设置有问题
原因2:还有一种可能就是你的请求url原本应该是https的用了http,也会报这个错误。
解决方案:
方法一、将文件中的响应Conten-Type设置成multipart/form-data或者删掉Content-Type设置
方法二、在form表单中添加 enctype="multipart/form-data"
真的很难搞呀


![[错误记录]Current request is not a multipart...前端上传文件到后端报错记录 [错误记录]Current request is not a multipart...前端上传文件到后端报错记录](http://www.mshxw.com/aiimages/31/1023480.png)
