文件的上传下载 和图片字符 base64 请求头请求体等

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中上传

 

 

你可能感兴趣的:(文件的上传下载 和图片字符 base64 请求头请求体等)