BLOB URL 的自定义名称

2023-12-11

我们有一个 Angular 应用程序,它获取一些输入参数并将它们发送到后端进行处理。处理结果是一个pdf文件,我们要在新选项卡中打开。

执行此操作的代码类似于以下内容:

myService.getDocument(document)
  .then(function(response) {
    if (response.error) {
      // Error handling goes here
    } else {
      var file = new BLob([response.data), {type: 'application/pdf'});
      var fileURL = URL.createObjectURL(file);
      $window.open(fileURL, '_blank_');
    }
  });

一切正常,但浏览器中的 URL 显示一些随机生成的字符串,如下所示:

blob:http://localhost:3000/85cad96e-e44e-a1f9-db97a96ed3fe

显然,这对最终用户来说看起来不太好,我们更愿意显示对用户有意义的东西,如下所示:

blob:ftp://localhost:3000/my_document_name_or_whatever

我是 JS 新手,Angular 新手,HTML 新手,希望我的问题听起来不是很天真。

预先感谢您的投入。


简短的回答,你不能.

这是一个指向浏览器内存的地址,它存储了您的 blob,或者是指向原始文件的指针(如果用户通过输入 type=file 上传文件)。

这在某种程度上是设计使然的。您可以从同一个 Blob 创建多个此类 blobURL。如果他们使用文件名作为 URI,您就不能这样做。

理论上,您应该可以动态创建一个重定向到 BlobURI 的页面,并且您可以将此重定向页面命名为您的名称。但这只是理论,我自己从未尝试过。

粗略的概念证明可以在这个笨蛋,显然,你需要生成blob重命名.html动态地,并将其名称更改为您想要的名称,并且还强制其内容标头,以便浏览器认为它是一个 html 页面,如果您想摆脱.html。 另请注意,它似乎不适用于 pdf 文件,需要浏览器插件才能触发,但通过更多工作,它may有可能破解一些东西。

但无论如何,我只是让随机 URL,随着越来越多的 Web 应用程序使用这个出色的 API,您的用户会越来越习惯它。

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

BLOB URL 的自定义名称 的相关文章

  • 为什么 JavaScript base-36 转换看起来不明确

    我目前正在编写一段使用 Base 36 编码的 JavaScript 我遇到了这个问题 parseInt welcomeback 36 toString 36 看来要回归了 welcomebacg 我在 Chrome 开发者控制台和 Nod
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • AngularJS:初始化指令内的隔离范围

    我创建了一个指令 它接受一些属性并使用这些属性初始化隔离范围 如果未指定属性 则应使用计算值初始化隔离范围 我添加了一个链接函数 用于检查范围并初始化默认值 如果未使用属性设置值 范围已初始化 但如果我设置默认值 那么它稍后会被框架覆盖 一
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 将函数传递给指令以在链接中执行的正确方法

    我知道我们通常通过隔离范围将函数传递给指令 directive myComponent function return scope foo 然后在模板中我们可以这样调用这个函数
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28

随机推荐

  • 当泄漏工具未显示内存泄漏时,如何调试内存泄漏?

    我有一个用 Swift 编写的 iOS 应用程序 该应用程序正在泄漏内存 在某些情况下 一些对象应该被释放 但它们没有 我通过简单地添加了解了这个问题deinit调试消息如下 deinit println DEINIT KeysProvid
  • 贪心算法无法完成 0-1 背包 p‌r‌o‌b‌l‌e‌m 的情况

    我正在寻找一种情况 其中选择重量 考虑容量为 4 的背包以及具有以下重量和价值的物品 Item Weight Value value Weight A 3 1 65 0 55 B 2 1 0 5 C 2 1 0 5 基于每权重价值的贪婪算法
  • 有没有办法在 Dart 中通过引用传递原始参数?

    我想通过引用传递一个原语 int bool 我在这里找到了关于它的讨论 通过引用传递值类型 段落 Dart 中的值类型 但我仍然想知道是否有办法在 Dart 中做到这一点 除了使用对象包装器 有什么发展吗 Dart 语言不支持这一点 我怀疑
  • 将 Service Broker 与 Sql Server Express 2008 结合使用

    是否可以在 sql Express 上使用外部激活而不通过 sql enterprise standard 我想向 sql Express 服务代理发送一条消息 然后让它通知在同一盒子上运行的外部应用程序服务 以便启动控制台应用程序来拾取消
  • 使用 jQuery.ajax 和 JSONP 设置标头?

    我正在尝试使用 jQuery 访问 google 文档 这是我到目前为止所拥有的 var token my auth token ajax url http docs google com feeds documents private f
  • 当 COM 事件发生时,如何更新自定义图形项(在 pyqtgraph 中)?

    我做了一个程序 实时接收原油期货的每笔交易信息 基本上 OnReceiveRealData当事务执行并调用时执行real get方法 在该方法中 收集当前时间 价格和数量数据并用它们制作字典 有更多方法可以从实时流数据中制作 OHLC 格式
  • 如何获取当前shell脚本的完整路径名?

    有没有更简单的方法来做到这一点 bin ksh THIS SCRIPT usr bin readlink f echo 0 bin sed s PWD echo THIS SCRIPT 我被困在使用ksh但更喜欢一个适用于的解决方案bash
  • 闹钟没有停止

    我试图停止警报并检查它是否停止 但它总是返回 true 意味着警报正在工作 我尝试根据链接中的答案停止警报https stackoverflow com a 17616299 1226882但这对我不起作用 请参考下面的代码 启动警报 pu
  • 为什么 Spark Mongo 连接器不下推过滤器?

    我有一个大型 Mongo 集合 想在我的 Spark 应用程序中使用 Spark Mongo 连接器 该集合相当大 gt 10 GB 并且包含每日数据 索引为original item CreatedDate场地 在 Mongo 中选择几天
  • ReadProcessMemory 在某些页面上失败 (GetLastError()=299)

    我尝试读取进程 Win7 64 的所有提交页面 在大多数页面上它可以工作 但在少数页面上会失败 我无法解释为什么 这是我的测试程序 x32编译 在Win7 64中测试 include
  • HTML5 视频自动播放在 Chrome 中不起作用

    我正在尝试使用 html5 视频在滑块中显示视频 这适用于controls参数 显示控件 但是当我添加autoplay它不会自动播放 所以我搜索了原因 发现 chome 只允许静音视频自动播放 所以我添加了muted参数 但是当我这样做时
  • Microsoft 应用程序 ID 和密码有何用途?

    我正在尝试部署我的 Azure Bot 服务 但我有点难以理解 Microsoft 应用程序 ID 和密码的用途是什么 有人能给我解释一下这些术语吗 我试图在网上寻找答案但没有成功 感谢您的任何帮助 这是机器人服务的标识 你会注意到在应用程
  • 如何在 Swift 中将“Index”转换为“Int”类型?

    我想将字符串中包含的字母的索引转换为整数值 尝试读取头文件 但找不到类型Index 虽然它看起来符合协议ForwardIndexType使用方法 例如distanceTo var letters abcdefg let index lett
  • 排序/过滤 MVC

    我正在尝试按作者姓氏 出版日期 最新和最旧 标题 最受欢迎和评分最高对搜索结果进行排序 我使用了一个例子 几乎逐字复制 但它对我不起作用 对我做错了什么有什么建议吗 这是我的控制器代码 public ActionResult Index s
  • 如何将 Ncurses 添加到 Visual Studio 2017 中的项目?

    我正在寻找详细的分步指南 以将 Ncurses 添加到 Visual Studio 2017 中的项目中 我下载了源代码 但我不知道如何将其添加到我的项目中 我知道这个问题对你来说很愚蠢 但我是 C 的初学者 没有在网上找到将 Ncurse
  • javax.validation.ValidationException:HV000183:无法加载“javax.el.E​​xpressionFactory”

    我尝试使用休眠验证器编写非常简单的应用程序 我的步骤 在 pom xml 中添加了以下依赖项
  • 如何将 Blue Imp 文件上传集成到 CakePHP?

    Wa正在使用CakePHP 需要集成Blue Imp文件上传库 有人成功整合了这些吗 如果是 您是否设置上传以将文件存储在数据库或文件系统上 您能否分享此类集成的示例 非常感谢您的帮助和指导 是的 我在 php 中集成了 BlueImp 文
  • 如何使用 SQL 从字符串末尾删除数字

    拜托 你能回答我的问题吗 如何使用 SQL 从字符串末尾删除数字 例如 字符串 2Ga4la2009 必须转换为 2Ga4la 问题是我们无法修剪它们 因为我们不知道字符串末尾有多少位数字 最好的问候 加琳娜 这似乎有效 select le
  • 连接到套接字时似乎无法实现超时

    我正在尝试为 connect 提供超时 我四处搜寻 发现了几篇与此相关的文章 我已经编写了我认为应该有效的代码 但不幸的是我没有收到 getsockopt 报告的错误 但是当我执行 write 时 它失败了 错误号为 107 ENOTCON
  • BLOB URL 的自定义名称

    我们有一个 Angular 应用程序 它获取一些输入参数并将它们发送到后端进行处理 处理结果是一个pdf文件 我们要在新选项卡中打开 执行此操作的代码类似于以下内容 myService getDocument document then f