使用 javascript 创建的锚点下载属性在 iOS Chrome 上不起作用

2023-12-23

我在 AWS S3 存储桶中保存了一个视频/mp4 文件,当用户单击图标时,应从客户端设备(手机或计算机)下载该文件。我首先使用发出请求fetch,然后创建一个blob响应中的对象。接下来,我使用 javascript 创建一个锚元素,附加 href 属性并触发它的单击,如下面的代码所示:

fetch(url, {
      headers: new Headers({
        'Content-Disposition': "attachment; filename='file-name.mp4'",
      }),
    }).then((response): void => {
      if (!response.ok) {
        console.log('Error', response);
      }

      response.blob().then((blob): void => {
        let videoUrl = window.URL.createObjectURL(blob);
        let a = document.createElement('a');
        document.body.appendChild(a);
        a.href = videoUrl;
        a.download = 'file-name.mp4';
        a.target = '_blank';
        a.click();
        document.body.removeChild(a);
      });
    });

测试此代码时,它可以在 Android Chrome 和 iOS Safari 上运行,但不能在 iOS Chrome 上运行。我可以看到请求已被触发,但没有任何反应,甚至没有打开新选项卡。 我尝试过其他一些方法,例如使用文件保存器.js https://github.com/eligrey/FileSaver.js库,也直接尝试了文件阅读器 https://developer.mozilla.org/en-US/docs/Web/API/FileReader就像下面的例子一样,但仍然不起作用。

fetch(url, {
      headers: new Headers({
        'Content-Disposition': "attachment; filename='file-name.mp4'",
      }),
    }).then((response): void => {
      if (!response.ok) {
        console.log('Error', response);
      }

      response.blob().then((blob): void => {
        FileSaver.saveAs(blob, 'file-name.mp4');
      });
    });


fetch(url, {
      headers: new Headers({
        'Content-Disposition': "attachment; filename='file-name.mp4'",
      }),
    }).then((response): void => {
      if (!response.ok) {
        console.log('Error', response);
      }

      response.blob().then((blob): void => {
        let reader = new FileReader();

        reader.readAsDataURL(blob);

        reader.onloadend = (): void => {
            if (reader.result) {
                let url = reader.result.toString();

                window.open(url, '_blank');
           }
        };
      });
    });

blob 类型是“application/octet-stream”。有没有人遇到过类似的问题或有任何其他新方法的想法?谢谢你!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javascript 创建的锚点下载属性在 iOS Chrome 上不起作用 的相关文章

  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no
  • 使用 UITabBarController 时覆盖整个屏幕的视图?

    我想在 UITabBarController 设置中在整个屏幕上覆盖 HUD 样式的透明图形 执行此操作的按钮位于第一个选项卡的屏幕 FirstViewController 中 并且覆盖层也应该覆盖选项卡 这可能吗 您可以将新视图直接附加到
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 通过 Button Swift 中的标签发送行和部分

    我里面有这个cellForRowAtIndexPath cell plusBut tag indexPath row cell plusBut addTarget self action plusHit forControlEvents U
  • Xcode 异步单元测试在主线程上等待

    我正在尝试使用 Xcode 中的单元测试来测试一些异步代码 但主线程被阻塞 问题在于 某些正在测试的代码期望从 iOS 类 AVFoundation 接收回调 但是 AVFoundation 类似乎只会在主线程上回调 问题是 如果我正在进行
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 从现有坐标地图套件中查找最近的位置

    我正在为拥有多家商店的客户开发 iPhone 应用程序 目标 C 我有数组中所有商店 20 的坐标 纬度 长 目前我正在考虑循环遍历商店坐标数组并获取从用户当前位置到商店位置的距离 然后将它们添加到数组中并按最小距离进行排序 这是正确的方法
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 使用输入类型 = 文件捕获照片时移动 safari 崩溃

    我正在使用输入类型文件在 iOS 中启动相机 我正在使用以下代码行
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 所有 RestKit 项目在归档时都无法构建

    这个问题涉及RESTKIT 0 9 x 如果您是 Restkit 新手 请考虑使用较新的版本0 10 x https github com RestKit RestKit tree v0 10 1 branch 我最近继承了一个项目 使用r
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points

随机推荐

  • QlikView - 使用变量设置分析表达式

    我有变量 varCurrentYear varCurrentYear Year Today 我写了这个集合分析表达式 结果不正确 顺便说一下如果变量是这样声明的 varCurrentYear 2014 结果是正确的 为什么 谢谢 I d u
  • Helm stable/airflow - 使用 Helm 图表失败时使用共享持久卷进行 Airflow 部署的自定义值

    客观的 我想在 Kubernetes 上部署 Airflow 其中 Pod 可以访问共享持久卷中的相同 DAG 根据文档 https github com helm charts tree master stable airflow usi
  • 购物车中的产品重复

    我的购物车功能有一个简单的问题 当我点击 添加到购物车 按钮后 如果它具有相同的产品 ID 它会在新行中输出一个新产品 如果产品 ID 相同 则只需增加产品的数量即可 const products const carts const inp
  • iOS UITabBar:删除顶部阴影渐变线

    我实现了一个自定义 UITabBar 并且它上面仍然有这个渐变 阴影 我添加了 self tabBar setBackgroundImage UIImage imageNamed navBarBottom png 这只是改变背景但保持阴影渐
  • 如何结合angularjs和xhtml?

    这是 AngularJS 的一个最小示例 保存为时可以工作angular html p Nothing here yet p 不过 我坚信 XML 并且
  • OCaml 编译器检查向量长度

    我想知道是否可以在 OCaml 中进行编译时检查以确保数组的长度正确 对于我的问题 我想在进行分段向量减法之前验证两个 GPU 1 dim 向量的长度相同 let init value 1 let length 10 000 000 let
  • Rails:对 before_create 进行单元测试?

    我正在尝试测试回调是否正确生成了一个字段 但我无法弄清楚这一点 album rb before create generate permalink private def generate permalink title album dow
  • 在 Visual Studio 2013 中从模型生成数据库时出错

    我已经安装了VS2013 但仍然有VS2012 在 VS2013 中 我无法从实体框架中的模型生成数据库 我收到以下错误消息 错误信息中的文件确实存在 有谁知道我该如何解决这个问题 你关于检查驱动器的提示让我看到了我之前应该看到的东西 环境
  • PDO异常在laravel中找不到驱动程序

    我试图在 laravel 5 中执行迁移命令 但它显示 PDOException 错误 我将database php 文件更改为以下内容 mysql gt driver gt mysql host gt env DB HOST localh
  • 处理搜索的最佳实践

    我有一个SearchView设置 我有一个松散解耦的架构 使用Retrofit and Otto 我想知道什么最佳实践用于 Android 中的搜索 或任何一般的移动应用程序 意味着类似的东西也可以应用于 iOS 具体来说 我正在使用Aut
  • 有人可以解释一下人工神经网络吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 根据维基百科 http en wik
  • 存在于多个目录中的实体的 Hibernate 注释

    我有一个由 Hibernate 映射到数据库目录 Active 中的数据库表的 Person 实体 一段时间后 活动 目录中该数据库表中的记录将被存档 移动到数据库目录 历史 中该表的精确副本 我需要从活动目录和历史目录中检索 有没有比创建
  • 使用标准 .Net 异步模式的优点?

    我正在设计一个执行长时间运行任务的类 我想到的第一个设计是 public TaskHandle DoSomethingAsync DoSomethingCompleteCallback completedCallback public vo
  • 如何以编程方式使用密码锁定 Android 设备

    我正在尝试创建一个应用程序 允许用户使用网站上的密码锁定他的 Android 设备 所以我必须找到一种以编程方式锁定设备的方法 这意味着是否有任何人拥有允许我为设备设置密码的代码 当我解锁屏幕时 它要求输入代码才能访问家庭 所选择的答案是正
  • 使用“dotnet dev-certs https”创建的证书的默认位置是什么

    遵循 dot net core CLI 命令可以创建证书 dotnet 开发者证书 https 该命令有一个可选参数用于指定导出路径 如果不指定此路径 有谁知道证书会去哪里 似乎命令的帮助输出 dotnet dev certs help 似
  • 如何在 Spring Boot 中为 mongodb 存储库进行自定义排序查询?

    我想把这个查询与 Query我的存储库中的注释 这是查询 db report find company Random sort reportDate 1 limit 1 使用 Query 注释或使用 MongoTemplate 实现自定义查
  • 如何将成员函数指针传递给采用常规函数指针的函数?

    我有一个如下所示的玩家类 精简为该问题所需的内容 class Player public Player Player void kill void death void reset The kill death and reset 函数如下
  • HTTP 查询字符串中哪些字符必须转义?

    此问题涉及 URL 查询字符串部分中的字符 这些字符出现在 标记字符 Per 维基百科 http en wikipedia org wiki Query string 某些字符保留原样 而其他字符则进行编码 通常使用 转义序列 我一直在尝试
  • 分块上传到 Google Cloud Storage 错误 503 服务不可用

    我正在尝试使用分块上传文件jQuery and 谷歌云存储 v1beta2 Json API进入谷歌云存储 我正在执行以下步骤 如中所述API文档 https developers google com storage docs json
  • 使用 javascript 创建的锚点下载属性在 iOS Chrome 上不起作用

    我在 AWS S3 存储桶中保存了一个视频 mp4 文件 当用户单击图标时 应从客户端设备 手机或计算机 下载该文件 我首先使用发出请求fetch 然后创建一个blob响应中的对象 接下来 我使用 javascript 创建一个锚元素 附加