例如,如果你点击链接:
数据:应用程序/八进制;base64 SGVsbG8 =
浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?
例如,如果你点击链接:
数据:应用程序/八进制;base64 SGVsbG8 =
浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?
当前回答
< a href = . .下载= . .>工作左键和右键->保存链接为..,
但是<img src=..下载= . .右击>不工作->保存图像为..,建议“Download.jped”。
如果你把两者结合起来:<a href=.下载= . .> < img src = . . > < / >
它适用于左键单击,右键单击->保存链接为..,右键单击->保存图像为..
你必须写两次data-uri (href和src),所以对于大的图像文件,最好是用javascript复制uri。
使用Chrome/Edge 88进行测试
其他回答
使用服务工作者,这最终在真正意义上成为可能。
创建一个假URL。例如/saveAs/myPrettyName.jpg 在<a href, <img src,窗口中使用URL。open(url),绝对可以用“真正的”url做任何事情。 在worker内部,捕获fetch事件,并用正确的数据进行响应。
浏览器现在会建议myPrettyName.jpg,即使用户在一个新的选项卡打开文件,并试图保存它。这将完全像文件来自服务器一样。
// In the service worker
self.addEventListener( 'fetch', function(e)
{
if( e.request.url.startsWith( '/blobUri/' ) )
{
// Logic to select correct dataUri, and return it as a Response
e.respondWith( dataURLAsRequest );
}
});
您可以向锚元素添加一个下载属性。
示例:
<a download="abcd.cer"
href="data:application/stream;base64,MIIDhTC......">down</a>
< a href = . .下载= . .>工作左键和右键->保存链接为..,
但是<img src=..下载= . .右击>不工作->保存图像为..,建议“Download.jped”。
如果你把两者结合起来:<a href=.下载= . .> < img src = . . > < / >
它适用于左键单击,右键单击->保存链接为..,右键单击->保存图像为..
你必须写两次data-uri (href和src),所以对于大的图像文件,最好是用javascript复制uri。
使用Chrome/Edge 88进行测试
使用download属性:
<a download='FileName' href='your_url'>
下载属性适用于Chrome、Firefox、Edge、Opera、桌面版Safari 10+、iOS Safari 13+,但不适用于IE11。
No.
整个目的是它是一个数据流,而不是一个文件。数据源不应该知道用户代理将其作为文件处理……事实并非如此。