Javascript 设置an的默认另存为名称(<;嵌入>;或<;iframe>;它使用一个Blob

Javascript 设置an的默认另存为名称(<;嵌入>;或<;iframe>;它使用一个Blob,javascript,html,pdf,node-pdfkit,Javascript,Html,Pdf,Node Pdfkit,我使用PDFKit(无节点)在浏览器中生成PDF,并通过src属性将其显示为iframe或嵌入标记。生成的BlobURL是某种UUID。因此,整个页面看起来像: <embed src="blob:http://localhost/eeaabb..."/> PDF看起来不错,但当我在Chrome中单击下载链接时,默认文件名是UUID。在FireFox中,它只是“document.pdf” 如果这是一个服务器生成的PDF,我会使用内容配置和/或操纵URL,使其最后一部分是我想要的名

我使用PDFKit(无节点)在浏览器中生成PDF,并通过src属性将其显示为iframe或嵌入标记。生成的BlobURL是某种UUID。因此,整个页面看起来像:

<embed src="blob:http://localhost/eeaabb..."/>

PDF看起来不错,但当我在Chrome中单击下载链接时,默认文件名是UUID。在FireFox中,它只是“document.pdf”

如果这是一个服务器生成的PDF,我会使用内容配置和/或操纵URL,使其最后一部分是我想要的名称,但对于客户端生成的对象,这似乎是不可能的

我尝试过的事情:

  • 通过元数据设置PDF标题。这可以工作,但不影响文件名
  • 操纵“嵌入标记标题”属性。似乎什么都没做
  • 更改页面标题。不会影响文件
  • 尝试将某些内容附加到数据url。只是防止PDF显示
  • 通过POST上传PDF,然后通过我可以控制URL的页面下载。可以工作,但生成客户端PDF却只需将其上传到服务器,这似乎很疯狂
有没有办法控制默认/建议的文件名

有没有办法让我控制这个名字

不可以。您无法控制存储在用户本地文件系统中的文件名

您可以使用
元素,并将
下载
属性设置为建议的文件名。如果用户选择下载提供的文件,用户可以在下载文件之前或之后随时更改文件名

window.onload=()=>{
设blob=newblob([“file”]{
类型:“文本/普通”
});
让url=url.createObjectURL(blob);
设a=document.createElement(“a”);
a、 href=url;
a、 下载=“file.txt”;
文件.正文.附件(a);
console.log(url);
a、 单击();

}
我还没有找到chrome的默认插件。
不过,我有一款适用于Firefox的软件,由于一些奇怪的原因,它在chrome中默认为
download.pdf

通过以

'data:application/pdf;headers=filename%3D' + FILE_NAME + ';base64,...'
Firefox接受文件名作为您的文件名,但chrome不


A在chrome中显示更好的
download.pdf
,它不喜欢嵌套的iFrame

以及一个仅在FF中可用的代码段:

const FILE_NAME='mycolfilename.pdf';
常量文件_头=';headers=文件名%3D';
取('https://dl.dropboxusercontent.com/s/rtktu1zwurgd43q/simplePDF.pdf?dl=0)。然后(r=>r.blob()
.然后(blob=>{
const f=新文件读取器();
f、 onload=()=>myPdfViewer.src=f.result.replace(“;”,file_header+encodeURIComponent(file_NAME)+“;”);
f、 readAsDataURL(blob);
});

我认为它实际上并没有回答实际的问题(即使从我的调查中,同样的“不”答案也适用):OP试图控制内置于chrome中的pdf查看器插件,它会暴露一个“下载”按钮。@Kaido OP在问题中没有提到
.pdf
插件?答案与在用户文件系统中下载文件和“控制”下载文件的名称相同。“当我在Chrome中单击下载链接时”,这是pdf查看器插件的下载链接。@Kaido然后OP应该检查插件代码,进行必要的调整,或编写自己的
.pdf
查看器插件。如果OP试图提供pdf viewer插件之外的下载文件,请使用设置了
下载
属性的
元素来建议提供文件的文件名。OP还可以尝试用
数据URI
替换
Blob URL
。这两种方法都不能“控制”用户文件系统中下载文件的文件名。请尝试FF,不幸的是,它甚至不能加载到chrome上,可能是因为iframes的限制。显然,我的本地主机上确实出现了…建议的文件名仅在
数据URI
被导航到单独的浏览器选项卡并单击下载图标时才会出现在提示中,而不在
元素中。不清楚原始问题中的“下载链接”指的是什么。@guest271314我为chrome添加了一个链接。你需要点击的是
宽度
高度
设置在
处,以确定是否显示下载图标@guest271314,是的,他们的插件UI可能不完美。