从 Blob URL 创建下载链接
Create a download link from a Blob URL
在我正在处理的谷歌浏览器扩展程序中,从具有XMLHttpRequest
的服务器下载了一个文件。该文件包含存储在ArrayBuffer
对象中的一些二进制数据。为了提供下载此文件的可能性,我正在使用createObjectURL
API。
function publish(data) {
if (!window.BlobBuilder && window.WebKitBlobBuilder) {
window.BlobBuilder = window.WebKitBlobBuilder;
}
var builder = new BlobBuilder();
builder.append(data);
var blob = builder.getBlob();
var url = window.webkitURL.createObjectURL(blob);
$("#output").append($("<a/>").attr({href: url}).append("Download"));
}
它工作正常;除了文件名是一个不透明的UUID,如9a8f6a0f-dd0c-4715-85dc-7379db9ce142
。有没有办法强制此文件名为更用户友好的名称?
您可以通过
设置锚点的"download"属性来强制使用任意文件名
请参阅:http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download
我以前从未尝试过,但应该可以创建一个新的 File 对象(允许您指定文件名)并将 blob 写入其中。大致如下:
function publish(data, filename) {
if (!window.BlobBuilder && window.WebKitBlobBuilder) {
window.BlobBuilder = window.WebKitBlobBuilder;
}
fs.root.getFile(filename, {
create: true
}, function (fileEntry) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function (e) {
console.log('Write completed.');
};
fileWriter.onerror = function (e) {
console.log('Write failed: ' + e.toString());
};
var builder = new BlobBuilder();
builder.append(data);
var blob = builder.getBlob();
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
我认为这可能对你有用。
相关文章:
- 将下载链接从web浏览器传递给第三方应用程序
- 使用angular创建JSON下载链接
- jquery对话框可见时自动下载链接问题
- aFrame.io创建超链接和下载链接
- 将屏幕截图显示为pdf下载链接
- 为什么YouTube-dl下载链接来自YouTube在meteorjs应用程序中
- 从ASP网站抓取JavaScript下载链接
- 您如何处理需要使用 Angular 的授权令牌的下载链接
- 在 Spring-MVC 中创建下载链接
- 一键下载链接并在浏览器操作中添加书签
- 设置下载文件的名称,即使下载链接重定向到另一个
- 根据移动/桌面操作系统在网站上显示不同的按钮/下载链接
- 如何在动态生成的下载链接中解析csv文件
- 单击多个 HRREF 下载链接
- 我如何使一个下载链接与两个东西下载
- Html和javascript:如何将下载链接切换到按钮
- 如何为IPFS托管的文件创建下载链接
- 单击图像下载链接
- 在javascript中的两个下载链接之间创建一条折线
- 在不下载文件的情况下检查下载链接是否正常工作