当前位置: 首页 > 面试题库 >

BLOB URL的自定义名称

陈寒
2023-03-14
问题内容

我们有一个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,并且您可以将该重定向页面命名为您。但这只是理论,我从来没有尝试过自己做。

可以在此插件中看到一个粗略的概念证明,显然,您需要动态生成
blobRename.html
,并将其名称更改为所需的名称,并强制使用它的内容标题,以便浏览器认为它是html。如果您想摆脱该页面.html。还要注意,它似乎不适用于需要浏览器插件触发的pdf文件,但是如果您需要做更多的工作,就有
可能 破解某些东西。


但是无论如何,我只会让随机网址成为您的用户,因为越来越多的Web应用程序确实使用了这个出色的API,因此您的用户将越来越习惯它。



 类似资料:
  • 更新时间:2019-06-12 10:28:29 默认域名 平台会为您生成该项目下所有服务可用的二级域名,可在顶部菜单“发布”-“域名管理”查看默认域名及自定义域名。默认域名是为了便于您调试API时使用,是http协议。如果您需要使用https协议的域名,或者将服务进行商业化使用,则需要在“域名管理”-“自定义域名”处进行自定义域名绑定及https证书的上传。 请注意,默认域名有限流策略。同一个默

  • 所有在 Gitbook.com 上的书的http地址为 http://{author}.gitbooks.io/{book}/,而书内容的地址是 http://{author}.gitbooks.io/{book}/content/。 但是你也可以使用你自定义的域名(GitBook的免费功能)。域名可以绑定到你的主页或者内容上(或两者都)。 很容易就可以添加一个自定义域名。 GitBool.com

  • 问题内容: 我想要一个Java枚举,其值是整数。 例如: 但是我也想要这两个常量的自定义名称, 例如“ Task Created”和“ Task Deleted”(那里有空格)。 我想尽可能优雅地做到这一点,而无需编写 太多额外的代码。 我可以在没有其他 将枚举常量映射到其自定义名称的映射的情况下实现此目标吗? 我在该项目中使用JDK 6。 问题答案: 只需为此添加一个字段: 如果您不想指定字符串

  • 问题内容: 我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“ base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是: 并没有帮助我,每次将baseV

  • 问题内容: 为什么这样的结构 给一个错误? 问题答案: 默认参数值在函数定义时评估,但仅在函数调用时可用。因此,参数列表中的参数不能相互引用。 将参数默认为默认值并在代码中为此添加测试是一种常见的模式:

  • 在不使用其他映射( 将枚举常量映射到它们的自定义名称)的情况下,我能做到这一点吗? 我在这个项目中使用JDK6。