首页 > 其他分享 >文件下载的报错

文件下载的报错

时间:2023-02-22 18:44:34浏览次数:36  
标签:文件 const 报错 blob path new rsp 下载

问题描述:首先是能够下载文件,文件是属于压缩文件,但是下载下来的数据比实际数据要大,导致了不能正常打开。

解决方案一:
使用responseType: 'blob',注意这不是在请求头中定义,这个时候下载下来的数据大小是正常的,但是需要去读取blob数据的时候,有两种方法,一种如下:

const rsp = await request.get(uri, {responseType: 'blob'})
const blob = new Blob([rsp], {type: 'application/vnd.ms-excel'})
let url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = '文件夹名字'
a.click();

这个方法的虽然可以下载下来文件,但是有两个不满足,第一个是a标签会打开一个额外的窗口,第二个是不能获取到下载地址。

const rsp = await request.get(uri, {responseType: 'blob'})
const reader = new FileReader();
reader.readAsText(rsp) // 读取blob数据的另一种方式 const text = await (new Responese(blob)).text()
reader.onload = function (result) {
  const blob = new Blob([rsp], {type: 'application/vnd.ms-excel'})
  const a = document.createElement('a');
  a.href = url;
  a.download = '文件夹名字'
  a.click();
}

解决方案二:
因为要使用electron,最后搜到可以调用electron自带的发送请求,同时设置地址,就可以完成需求。

    ipcMain.handle('version-down-load',async function (e, params) {
        const { DIR } = require('./common');
        const p = DIR.VERSION; // 文件该放置的地址
        const win = getMainWindow(); // 获取到主进程
        return new Promise((resolve, reject) =>{
            win.webContents.downloadURL(params?.path);
            win.webContents.session.once('will-download', (event, item, webContents) => {            
                let path =`${p}\\${params.name}.tar.gz`
                item.setSavePath(path)
                item.once('done', (event, state) =>{
                    if (state === 'completed') {
                        resolve(path)
                    }
                })
            })
        })
    });

标签:文件,const,报错,blob,path,new,rsp,下载
From: https://www.cnblogs.com/taosifan/p/17145473.html

相关文章

  • 神舟hasee-N960Kx电脑 Hackintosh 黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。硬件型号驱动情况主板NotebookN960Kx(LCController-4386)处理器英特尔Celeron(赛扬)[email protected]双核(更换)已驱动内存4GB(......
  • #yyds干货盘点 react笔记之学习之使用create-react-app创建文件
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • C++ 17 遍历文件夹图片文件进行循环操作
    #include<filesystem>usingnamespacestd;namespacefs=std::filesystem; stringpath=filepath;//替换为指定目录的路径 for(constauto&entry:fs::dir......
  • selenium-文件窗口上传文件
    说明:根据点击“上传文件“按钮,在弹出的窗口中选择文件并上传;通过窗口上传文件1、----pyautogui安装:pipinstallpyautogui优点:跨平台(window\linux\mac)缺点:只能......
  • 局域网大文件上传解决方案
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式......
  • 使用fontmin,压缩字体文件,从十几M到几kb,只选择需要使用的文字
    字体文件压缩fontmin,大幅压缩字体文件快速熟练fontmin的使用,只需要在代码中配置文章中需要用到的文字,可以大幅度缩减代码大小安装npminstallfontmin目录结构src......
  • tensorflow2.0+TF-lite 各种报错
    generic_type:type"InterpreterWrapper"isalreadyregistered!原因:tensorflow2.5.0rc0版本太高,降低版本:pipinstalltensorflow==2.3  ValueErron:"batch_si......
  • Django——配置文件修改
    返回HTML文件应用场景:需要向接收端返回HTML文件时,使用render返回。需要配置:在DIRS中,配置login.html的路径。配置静态文件应用场景:指CSS,JavaScript......
  • debug补充、员工管理系统、字符编码、文件操作
    目录一、debug补充二、员工管理系统三、字符编码(1)、概念(2)、字符编码的发展史(3)、字符编码的使用四、文件操作(1)、概念讲解(2)、通过代码打开文件的两种方式(3)、文件......
  • Windows中XAudio2_7.dll文件丢失解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损......