contenttype 1.application/x-www-form-urlencoded 请求参数为form-data 以key value的map形式传递 后台以getparameters获取
2.application/json,charset=UTF-8 请求参数为json.stringfy后的json字符串 放在request payload中 后台需要以GSON解析或者放到bean中可以获取
这样复杂的对象,application/x-www-form-urlencoded这种形式传递的话, 会被解析成 obj[0]['name']=111&obj[0].['password']=2这样的。如果复杂json要用此方式可以用qs.stringfy
//https://www.cnblogs.com/tugenhua0707/p/8975121.html
这两种可以使用qs。js来互相转化
3,multipart/form-data
一般form的enctype默认为x-www-form-urlencode
可选为multipart 和text/plain
multipart为一种高效二进制的格式 常用于文件传输
它的request payload 包含多个parts
每个part都定义了 content-disposition 为文件的基本描述 如
--ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC
Content-Disposition: form-data; name="city"
--ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC
Content-Disposition: form-data;name="desc"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit ...
--ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC
Content-Disposition: form-data;name="pic"; filename="photo.jpg"
Content-Type: application/octet-stream Content-Transfer-Encoding: binary
文件上传在传统的jq和js中
var formdata=new formData(可以直接传form) //var
form = document.getElementById(
'form'
),然后把formdata以参数传递
formdata。append(name,fileObj) //var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
上传时的progress可以通过xhr对象的progress事件监听来实现
也可以用现成封装好的 比如iview的upload 控件
https://www.cnblogs.com/liyongquan/p/8615928.html
2.下载
在跨域请求中前端无法获取请求头,需要后端设置
文件一般需要后台转为blob,没转的话可以参考下面做法
参考文章:http://www.cnblogs.com/cynthia-wuqian/p/7927621.html
也可以自己转换为blob let blob = new Blob([res.data], {type: "application/vnd.ms-excel"});
fetch的话有response.blob() (fetch可以自己response.headers.get('content-type');获取返回类型)
var url = window.URL.createObjectURL(res);
const a = document.createElement('a');
a.style.display = 'none';
a.download = '交易明细';
a.href = url;
a.click();
3.特别需求
iviewupload上传后 返回地址qrcode生成二维码 此时获取convas对象 可以用todataUrl转为base64图片 在转为blob
也可以用canvs的toblob(blob=>{})//此方法为异步
直接加到formdata中上传