我们有一个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。