美文网首页
下载流文件

下载流文件

作者: _喵了个喵_ | 来源:发表于2019-01-14 10:57 被阅读0次

    由于jQuery的ajax函数、及ajaxSubmit等函数的返回类型(dataType)只有xml、text、json、html等类型,没有“流”类型,故我们要实现ajax下载时,不能够使用相应的ajax函数进行文件下载。

    请看实例:

    1. form 通过js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新  缺点:无法传递header

     var form = $('<form>');

                        form.attr('style','display:none'); 

                        form.attr('method','post'); 

                        form.attr('target', '_self'); 

                        form.attr('action',url);

                        for (var obj in data) {

                            if (data.hasOwnProperty(obj)) {

                                var input =  $('<input>');

                                input.attr('tpye','hidden');

                                input.attr('name',obj);

                                input.attr('value', data[obj]);

                                form.append(input)

                            }

                        }

                        $('body').append(form);

                        form.submit(); 

                        form.remove();

    2.axios   axios ie9+       window.navigator.msSaveBlob ie10+  此方法只兼容ie10+

    var config = {

                headers: {

                    'token': token,

                    'Content-Type': 'multipart/form-data',

                },

                responseType: 'blob',

            }

    axios.post(url, data,config).then( res => {

        if ('download' in document.createElement('a')) { // 非IE下载

                        var url = window.URL.createObjectURL(res.data)

                        var link = document.createElement('a')

                        link.style.display = 'none'

                        link.href = url;

                        link.download = fileName;

                        document.body.appendChild(link)

                        link.click();

                        window.URL.revokeObjectURL(link.href) // 释放URL 对象

                        document.body.removeChild(link)

                      } else { // IE10+下载

                        window.navigator.msSaveBlob(res.data, fileName)

                      }

                        }).catch( res => {

                            console.log(res)

                        })

    相关文章

      网友评论

          本文标题:下载流文件

          本文链接:https://www.haomeiwen.com/subject/ntkkrqtx.html