前端下载文件及预览

1.接口设置responseType属性

axios({
        url: encodeURI("XXX/XXX/XXX"),
        params: {
            id
        },
        responseType: "blob"
    })

2.下载设置

针对excel表格的导出:

if (window.navigator.msSaveOrOpenBlob) {
                            // 兼容IE10
                            const blob = res.data
                            window.navigator.msSaveBlob(blob, "错误报告.xlsx")
                        } else {
                            const blob = new Blob([res.data], {
                                // 定义一个blob
                                type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"
                            })
                            const downloadElement = document.createElement("a") // 创建一个标签
                            const href = window.URL.createObjectURL(blob) // 创建a标签的链接
                            downloadElement.style.display = "none"
                            downloadElement.href = href
                            downloadElement.download = "错误报告.xlsx" // 下载之后文档的名字
                            document.body.appendChild(downloadElement) //把a标签加入body中
                            downloadElement.click()
                            // document.removeChild(document.getElementsByTagName("a")[0]) // 点击之后移除a标签
                            window.URL.revokeObjectURL(href)
                        }

对于上传什么类型下载什么类型:

if (window.navigator.msSaveOrOpenBlob) {
                        // 兼容IE10
                        const blob = res.data
                        //newstr是文件名
                        window.navigator.msSaveBlob(blob, "文件名.png")
                    } else {
                        const blob = res.data
                        const reader = new FileReader()
                        reader.readAsDataURL(blob)
                        reader.onload = e => {
                            const a = document.createElement("a")
                            a.download = decodeURIComponent("文件名.png")
                            a.href = e.target.result
                            document.body.appendChild(a)
                            a.click()
                            // document.body.removeChild(a)
                        }
                    }
	## 预览
var fileInput = document.querySelector('input[type=file]');
var previewImg = document.querySelector('img');

fileInput.addEventListener('change', function () {
    var file = this.files[0];
    var reader = new FileReader();

    reader.addEventListener('load', function () {
        previewImg.src = reader.result;
    }, false);

    reader.readAsDataURL(file);
}, false);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

库库的写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值