Vue下载功能

div部分

 <template slot-scope="scope">
                        <el-link type="success">
                            <i class="el-icon-download el-icon--right"  @click="downloadRawdata(scope.$index, scope.row)">&nbsp;Download</i>
                        </el-link>
                    </template>
  downloadRawdata(index, row){
            //1.获取需要的数据赋值给dataurl
            console.log('row : '+row.id);
            const _self = this;
            _self.loading = true;
            this.$http.get('/DataHandlerInfo/DataInfo', {
                params: {
                    rowId: row.id,
                    userId:this.userId,
                }
            }).then((res) => {
                if (res.data["header"]["code"] == 0) {
                    _self.tableDataItem = res.data.value;

                    if(_self.tableDataItem.length>0){
                        var dataurl = _self.tableDataItem[0].filecontent;
                        if(dataurl==null){
                            _self.$message.error('The file does not exist in the database!');
                            _self.loading = false;
                            return;
                        }
                        if(dataurl.length < 1){
                            _self.$message.error('The file does not exist in the database!');
                            _self.loading = false;
                            return;
                        }
                        var arr = dataurl.split(','),
                            mime = arr[0].match(/:(.*?);/)[1],
                            bstr = atob(arr[1]),
                            n = bstr.length,
                            u8arr = new Uint8Array(n);
                        while (n--) {
                            u8arr[n] = bstr.charCodeAt(n);
                        }

                        let url = window.URL.createObjectURL(new Blob([u8arr], { type: mime }));
                        let link = document.createElement('a')
                        link.style.display = 'none'
                        link.href = url
                        // 获取文件名
                        if(mime==='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'){
                            link.setAttribute('download', _self.tableDataItem[0].filename);//指定下载后的文件名,防跳转
                        }else if(mime==='application/vnd.ms-excel'){
                            link.setAttribute('download', _self.tableDataItem[0].filename);
                        }else if(mime==='application/pdf'){
                            link.setAttribute('download', _self.tableDataItem[0].filename);
                        }else{
                            link.setAttribute('download', 'XXXX'+row.id+'.error');
                        }
                        document.body.appendChild(link)
                        link.click()
                    }

                } else {
                    _self.$message.error(res.data["header"]["message"]);

                }
                _self.loading = false;
            })
                .catch((error) => {
                    _self.$message.error(error.toString());
                    _self.loading = false;
                });

        },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值