处理来自 api 调用的文件下载

2023-12-10

在反应中,我正在根据 John Culviner 中提到的解决方案测试我的文件下载这个帖子

axios.post('api/downloadMyFile', 
            data
           ).then((response) => {
            
             const url = window.URL.createObjectURL(new Blob([response.data])) 

             const a = document.createElement('a');

             a.href = url;
             a.download = "test.zip"  
             document.body.appendChild(a);
             a.click();
             window.URL.revokeObjectURL(url);


           
        }).catch((err) => {
            
        } 

So file test.zip正在下载。但是当我保存后尝试打开它时,我在 Windows 中收到压缩 Zip 文件夹错误。

另外,我注意到我不需要在行中指定文件名a.download = "test.zip" 因为网络服务正在从共享存储获取文件并且它已经有一个名称。 所以在这种情况下,我是否需要将文件名也包含在response目的?就像是response.filename这样我就可以在下面的行中使用它,而不是手动命名它:

a.download = response.filename


The response.data从 axios 返回的是一个 JSON 字符串。因此,从该 JSON 创建 Blob 不会生成正确的对象。来自 Axios 文档:

// responseType表示服务器将要传输的数据类型 回应
// 选项有:'arraybuffer'、'document'、'json'、 “文本”、“流”
// 仅浏览器:'blob'
响应类型:'json', // 默认

简单的修复方法是告诉 Axios 以 a 的形式提供响应Blob。然后URL.createObjectURL()将生成格式正确的文件的 URL。

axios.post('api/downloadMyFile', data, { responseType: 'blob' })
.then(blob=>{
  const url = window.URL.createObjectURL(blob.data); 
  const a = document.createElement('a');
  a.href = url;
  a.download = "download.zip"  
  document.body.appendChild(a);
  a.click();
  window.URL.revokeObjectURL(url);
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理来自 api 调用的文件下载 的相关文章

  • 调整大小后获取实际图像大小

    我有一个充满缩略图的页面 用 css 调整大小150x150 当我单击缩略图时 页面变暗 并且图像以其真实尺寸显示 目前 我必须手动创建一个包含所有图像的实际高度的数组 为了解决设计问题 减少画廊的手动操作 我需要在调整图像大小 CSS 后
  • 发送电子邮件的 Google Apps 脚本语法错误。无法识别我的问题

    我正在尝试让 Google 工作表从工作簿中另一张工作表的长列表中发送个性化电子邮件 我使用了教程 因为我是所有编码语言的认证新手 但 AppScript 告诉我第 4 行有语法错误 我一生都无法弄清楚我做错了什么 但我确信当由具有这些合法
  • 如何使用 jQuery 将各种元素包装在 div 标签中?

    我有一个 html 结构 如下所示 h5 Title h5 p Content p ul li Item li li Item li ul p Content p h5 Title h5 p Content p ul li Item li
  • Protractor - 等待多个元素

    我正在尝试等待页面上的多个元素 我不知道可能有多少个 但至少会有一个 我知道使用以下命令等待单个元素 效果很好 var EC protractor ExpectedConditions browser wait EC presenceOf
  • 等待动态加载脚本

    在我的页面正文中 我需要插入以下代码作为 AJAX 调用的结果 p Loading jQuery p p Using jQuery p 我不能使用 load 由于文档已经加载 因此该事件不会触发 这安全吗 如果没有 我如何确保在执行自定义生
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • 如何使用 jQuery 通过单击按钮来选择下拉列表中的所有值?

    如何通过在 JavaScript 中使用 jQuery 单击按钮来选择下拉列表中的所有值 function select children option attr selected selected 应该做 当然你需要一个SELECT具有属
  • 如何在 joomla 模块中通过 javascript 发送输入文件类型

    我想将带有 javascript 的文件发送到 php 文件 我的 php 文件中有这个表单
  • AngularJS Youtube 播放器嵌入非常大的播放列表

    我目前正在构建一个 AngularJS 应用程序 我知道它有点过时 但我对它很有信心 我的应用程序需要嵌入一个 YouTube 播放器 其中包含一个非常大的播放列表 大约 1500 个项目 但我无法对其进行编码 以便它实际上可以嵌入超过 2
  • 是否有 IE 渲染完成事件?

    在尝试确定页面加载时间为 20 秒的原因时 我发现 IE8 中有一些奇怪的行为 场景是这样的 我进行 ajax 调用 它返回并且回调看起来像这样 StoreDetailsContainer html tableHtml var StoreD
  • 如何使用 JavaScript 禁用滚动条?

    当我仅在 Internet Explorer 7 中显示代表模式窗口的 div 时 我需要锁定浏览器滚动条 谷歌搜索我发现我可以使用document body style overflow hidden 但这不适用于 IE7 我也尝试过do
  • 为什么 "asdf".replace(/.*/g, "x") == "xx" ?

    我偶然发现了一个令人惊讶的 对我来说 事实 console log asdf replace g x Why two替代品 似乎任何没有换行符的非空字符串都会产生此模式的两个替换 使用替换函数 我可以看到第一个替换是整个字符串 第二个替换是
  • 将 MathJax 脚本添加到 Office 365 Sharepoint 中的页面

    我正在尝试将 Mathjax 库添加到 SharePoint 库 以便我们可以使用 LaTex 语法来添加方程 我在网上搜索时看到了多种方法 但似乎没有一种方法可以与最新版本的 MathJax 和 Office 365 版本的 ShareP
  • JavaScript 匿名函数语法

    下面两个块有什么区别 block 1 console log anonymous block block 2 function anon console log anonymous block 2 我在 Netbeans 中运行了这个 使用
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the
  • 如何将字符串转换为 Javascript 中可执行的代码行?

    我有以下代码 console log I am var x console log Alive 现在我只想使用x执行分配给它的代码字符串 例如 我什至可能不知道 x 的值 但只是想执行它 这可能吗 eval https developer
  • 查看元素的所有 dom 事件

    我有一个 jQuery UI 日期选择器 当您单击日期时 它会清除我的 URL 哈希值 并且不会更改文本框中的日期 我假设某个地方还有其他一些 JavaScript 实用程序 它也正在调用某种委托事件 抛出错误并终止 jquery 处理程序
  • AngularJS 应用程序:如何将 .js 文件包含到 index.html 中

    我是 angularJS 的新手 我设法使用 AngularJS 构建了一个phonegap应用程序 该应用程序正常并且运行良好 问题是 现在我对 angularJS 的工作原理有了更多的了解 至少我认为我已经了解了 我担心我的应用程序文件

随机推荐

  • 为什么 Alloy 告诉我 3 >= 10?

    在调试 Alloy 中的一个令人困惑的问题时 我使用了评估器来执行3 gt 10并得到结果true 我是不是错过了什么 按照正常标准 合金整数通常非常窄 并且它们通常具有某种 环绕 语义 在默认范围内 在 Alloy 4 2 中 Int 范
  • UISearchBar 在 iOS 4.1 上删除背景

    我正在尝试删除 UISearchBar 的背景以使其透明 我尝试了这些解决方案 1 for UIView subview in searchBar subviews if subview isKindOfClass NSClassFromS
  • 休息响应中的空 uri

    我正在为 nexus oss 开发一个插件 我的应用程序创建一个休息调用响应 对来自服务器的请求 但是当服务器收到它时 会抛出如下错误 javax xml bind UnmarshalException unexpected element
  • 无法从 iTunes Connect 接收有关 IAP 状态更改事件的通知

    我已在服务器上设置了一个 URL 用于接收本文所述的自动更新 IAP 状态更改通知 https help apple com itunes connect developer dev0067a330b 当然 我已经通过应用程序的主设置页面向
  • 如何在 android studio 中检索签名 APK 的密钥别名和密钥密码(从 Eclipse 迁移)

    我有一个 Android 应用程序目前在 Google Play 中发布 我会定期更新 在新推送之前 我按照以下流程对应用程序进行签名 在项目上按鼠标右键 Android 工具 gt 导出签名的应用程序包 提供密钥库密码 签署您的应用程序
  • 如果列表项不在另一个列表中,则删除列表项 - python

    这是我的情况 我有一个 Person 对象的列表 class Person def init self name age self name name self uid str uuid uuid4 self age age 我的 UI 包
  • 第二代 Google 云 SQL - App Engine

    很高兴看到您推出了第二代云 SQL 测试版 然而 我发现它还不适用于 GAE 项目 您能估计一下这个链接何时启用吗 由于第一代 SQL 的缓慢 我们正在我们的精美系统中进行一些重大的基础设施更改 但如果更改不远 我们将坚持使用云 SQL 自
  • 组件包——在哪里划分运行时、设计时、注册时等

    在构建安装组件时 我知道注册单元通常是 应该分开 的事情 但是何时应该划分组件的准则是什么安装分成两个单独的包 通常一个是运行时 另一个是设计时 额外问题 当运行时包和设计时包分开时 可接受的包命名约定是什么 任何特定于 IDE 中使用的内
  • time.strptime() - 参数 0 必须是 str,而不是字节

    显然我已经知道了strftime and strptime不喜欢字节字符串作为参数 但是我在这里陷入困境 因为我需要读取其中保存了不同字符编码的文件内容 并且我需要处理所有它们 并发送每个文件的时间部分该文本文件中的行strptime 一个
  • Json.NET 反序列化 Mongo ObjectId 给出了错误的结果

    我使用官方 Mongo C 驱动程序和 RestSharp 通过 Json NET 调用 Rest Api 来执行序列化 反序列化 假设我有一个 Person 类 如下所示 我想对其进行 POST 和 GET public class Pe
  • R 应用错误 - as.matrix.data.frame() 中的错误

    我遇到了一个莫名其妙的错误 我正在使用以下函数删除任何列中包含 NA 观察值的数据帧的行 removes NA d rows from a dataFrame wipeNArows lt function X rowsToDelete lt
  • 使用 PHP 和 JSON 将图像数据从 XCode 插入 MySQL 数据库

    如何使用 JSON 通过 PHP 从 XCode 在 MySQL 数据库中插入 存储图像 从 xcode 中 您可以 void uploadImage UIImage image NSData imageData UIImageJPEGRe
  • 如何使用 ionic 将 URL 中的图像保存到设备照片库中?

    我是 ionic 的新手 我正在应用程序中使用 ionic 开发应用程序 当用户单击下载按钮时 我需要将图像下载到用户设备 我进行了很多搜索 但找不到任何合适的解决方案 您可以使用Transfer plugin from ionic nat
  • 如何在 Mongoose 中检索嵌入文档中数组的最后一个对象?

    我在编写查询来检索 Story 文档中嵌入的 Comments 数组的最后一个对象时遇到问题 当我执行 db stories find 时 我的集合当前看起来像这样 id ObjectId 55d3a39565698bbc68079e31
  • XMPP 聊天应用程序因使用 VoIP 服务作为后台模式而被拒绝

    我已经完成了一个 XMPP 聊天应用程序 其中我使用 Voip 服务来获取 Voip 密钥 以便在我在后台时接收聊天消息 功能一切正常 但应用程序商店拒绝该应用程序 响应如下 2 16 多任务应用程序只能将后台服务用于其预期目的 VoIP
  • iPad 上模态视图上显示不需要的 SplitView

    在 iPad 上测试我的第一个 SwiftUI 应用程序时 我发现从 ContentView 显示的模态视图在 iPad 上显示为拆分视图 主侧的 UI 被截断 详细信息侧为空 我确实在这里检查了两篇文章 不需要的分割视图 and UISp
  • 读取csv文件c#

    有没有办法将 csv 文件读入矩阵 这样文件中的每个方块都将是矩阵中的一个单元格 有许多开源 CSV 阅读器 而且编写自己的代码也很容易 首先请访问 codeplex com http kbcsv codeplex com 或者Codepr
  • 使用 D3.js 对折线图中的线条进行动画处理

    我有我的折线图 有 2 条线 绘制折线图的数据是从 csv 文件中提取的 谁能解释一下我如何从一个空图表开始 当我单击一个按钮时 我的线条在图表上有动画效果吗 提前致谢 var Button d3 select button var mar
  • 我无法在 R 中安装软件包

    当我尝试在 Rstudio 中安装任何软件包时 我收到以下错误消息 Error in install packages path 1 C Users javad Documents Rhistory win library 3 2 The
  • 处理来自 api 调用的文件下载

    在反应中 我正在根据 John Culviner 中提到的解决方案测试我的文件下载这个帖子 axios post api downloadMyFile data then response gt const url window URL c