美文网首页
post下载

post下载

作者: 动感光波波波 | 来源:发表于2021-04-22 15:56 被阅读0次

    引言
    通过 window.open(url) 的方法下载文件,需要打开一个新的页面下载,影响用户体验。

    且如果参数数据量大,用 url 挂参的方式也不方便。

    用 post 下载文件,即可解决上述问题,优雅而美丽!

    后端
    后端需要将下载的接口的response header设置以下:

    Content-disposition: attachment; filename=name.xlsx
    Content-Type:application/octet-stream
    1
    2
    前端
    前端需修改 axios 请求的 responseType 为blob,然后创建 a 标签,模拟 a 标签点击:

    axios({
    method: 'post',
    url: '接口地址',
    data: formData,// 提交的数据
    responseType: 'blob'
    }).then(response => {
    let data=response.data // 根据返回拿到 Blob 的数据
    if (!data) {
    return
    }
    let url = window.URL.createObjectURL(new Blob([data]))
    let link = document.createElement('a') // 创建<a>标签
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', 'name.xlsx')
    document.body.appendChild(link)
    link.click() // 模拟点击<a>标签
    }).catch((error) => {
    console.log(error)
    })

    结语
    再也不要 window.open 啦!

    相关文章

      网友评论

          本文标题:post下载

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