zoukankan      html  css  js  c++  java
  • 跨域将blob对象保存到本地

    应用场景

    项目前后端分离,后端环境Django. 需要实现 前端可以下载后端生成的EXCEL文件同时对权限进行控制。

    将blob保存到本地

           function saveAs(blob,fileName) {
                if ('download' in document.createElement('a')) { // 不是IE浏览器
                    let url = window.URL.createObjectURL(blob)
                    let link = document.createElement('a')
                    link.style.display = 'none'
                    link.href = url
                    link.setAttribute('download', fileName)
                    document.body.appendChild(link)
                    link.click()
                    document.body.removeChild(link) // 下载完成移除元素
                    window.URL.revokeObjectURL(url) // 释放掉blob对象
                } else { // IE 10+
                    window.navigator.msSaveBlob(blob, fileName)
                }
            }

    获取blob内容,同样支持GETPOST获取

        var xmlhttp
        xmlhttp = new XMLHttpRequest()
        xmlhttp.onreadystatechange = function () { // Call a function when the state changes.
            if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
                // Request finished. Do processing here.
                console.log(xmlhttp.response)
                saveAs(xmlhttp.response, 'filename.xlsx')
            }
        }
        // async=false -同步,ture 异步
        xmlhttp.open(method='GET',url='http://ctcnc0378.carsgen.com:8000/budget/file_download?period_id=15', async=true)
        xmlhttp.setRequestHeader('Content-type', 'application/octet-stream')
        // 设置跨域访问的Token头
        xmlhttp.setRequestHeader('Authorization', 'Token 8002f4d3e770ada98ef5360c32e59d24f74b12cb')
        xmlhttp.withCredentials = true
        xmlhttp.responseType = "blob";
        xmlhttp.send(null)

    也可以用axios获取

    axios({
        method: 'post',
        url: 'api/user/',
        data: {
            period: '2021'
        },
        responseType: 'blob'
    }).then(response => {
        saveAs(response)
    }).catch((error) => {
    
    })
  • 相关阅读:
    Ch1 机器学习基础
    信息论与编码课程设计
    实验4 数据库的安全性、完整性
    实验3 SQL语言—更新操作、视图、索引等操作
    实验2 SQL语言—SELECT查询操作
    实验1 数据库的定义和建立实验
    计算机网络|网络层作业
    信息安全从业者书单推荐
    jenkins异常 -- active (exited),无法启动
    性能测试 -- docker部署grafana
  • 原文地址:https://www.cnblogs.com/Evan-fanfan/p/14876193.html
Copyright © 2011-2022 走看看