根据公司需求,做一个图片文件打包功能,接口写完毕之后,调用过程中,接口正常压缩打包,没有任何问题。但无法触发浏览器下载。经过检查发现,使用ajax 不能触发打包下载。
使用下面方法成功触发
let downImgUrl =this.http_url +`/api/fileDown/downloadPictureList?${encodeURI(JSON.stringify(urlList))}`;
window.location.href=downImgUrl;
总结一下为什么下载请求不能放在ajax里发送:
原因:因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。