类ajax提交post,下载文件

2020-02-11  

 开发过程中遇到一种场景,提交 echarts 的 base64 图片字符串到后台,后台生成导出 excel 表格包含该图片

考虑到 base64 图片字符串长度很长,需要使用 post 方式提交

但 ajax 无法提交的请求无法下载文件,所以模拟 form post 请求

js代码如下:

/** 下载文件
 * options:{
 *   url:'',            //提交地址
 *   data:{name:value}, //要发送的数据
 *   method:'post|get'  //提交方式
 * }
 */
function downloadFile(options) {
    var iframe = $('<iframe />');
    var form = $('<form method="' + options.method + '" />');
    form.attr('action', options.url);
    for (var key in options.data) {
        form.append('<input type="hidden" name="' + key + '" value="' + options.data[key] + '" />');
    }
    iframe.append(form);
    $(document.body).append(iframe);
    form[0].submit();
    iframe.remove();
}

 

ConstXiong 备案号:苏ICP备16009629号-3