最近在开发中遇到前端下载的问题,用户的一个需求是需要下载一个比较大的Excel数据,之前的开发人员采用了构建一个表单,然后通过submit的方式向后台发送请求。这样的缺点是无法捕捉下载的进度,用户无法知道下载是否成功,也没办法显示进度。经过多方面考虑,最终决定采用blob对象进行下载,在本地测试成功后在线上进行试验一直有问题,最后在StackOverflow网站上找到了答案,jQuery的ajax对数据进行了封装,拿到的数据无法被blob对象识别为数据流。所以,如果要使用blob对象进行前端下载,需要从后台获取文件流的时候,就不要使用jQuery的ajax请求了,可以手写一个原生的来解决这种问题。下载的数据时字符串的话就没有什么影响。
最终的结论就是jQuery的ajax不支持blob对象的文件流下载。