是二进制文件(pdf, word, excel, ppt, mp3,..)下载可能使用XHR或fetch
is binary file(pdf, word, excel, ppt, mp3,...) download possible using XHR or fetch?
是二进制文件(pdf, word, excel, ppt, mp3,…)下载可能使用XHR或fetch?我已经看到了一些使用数据URI和base64转换的pdf和图像的代码片段和技巧。我们有更好的机制吗?
我需要下载一个有以下限制的文件:
- 文件下载请求必须使用oauth2令牌进行身份验证。这意味着我需要将授权头设置为某个值
- 服务器返回数据块。需要加入块(或者我可以强制服务器发送非块数据)
我的NodeJS代码
获取元数据
var options = {
hostname : API_HOST ,
method : 'GET',
port : 443,
path : API_PATH + fileId,
headers : {
'Authorization' : 'Bearer ' + GOOGLE_ACCESS_TOKEN
}
}
var meta = '';
var fileRequest = https.request(options, function(response) {
response.setEncoding('utf8');
response.on('data', function(chunk) {
meta += chunk;
});
response.on('end', function(error) {
callback(error, meta);
})
});
获取实际文件
var file = fs.createWriteStream(GDRIVE_ROOT + '''' + JSON.parse(meta).originalFilename);
var options = {
hostname : url.parse(JSON.parse(meta).downloadUrl).hostname,
method : 'GET',
port : 443,
path : url.parse(JSON.parse(meta).downloadUrl).path,
headers : {
'Authorization' : 'Bearer ' + GOOGLE_ACCESS_TOKEN
}
}
var request = https.request(options, function(response) {
response.pipe(file);
});
request.end();
我有它为NodeJS工作。有没有办法让我在浏览器中实现文件下载。我有一个非工作的代码片段使用取回http://jsfiddle.net/LdyruLwv/
传输编码对浏览器中的应用程序应该是透明的,不用担心。
下面是一个基本的ajax文件下载解决方案,它使用带有下载属性的XHR2、blobs和锚。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
var blobURL = window.URL.createObjectURL(this.response);
var anchor = document.createElement('a');
anchor.download = 'filename.ext';
anchor.href = blobUrl;
anchor.click();
}
}
xhr.open('GET', request_url);
xhr.setRequestHeader('Authorization', 'Bearer ' + GOOGLE_ACCESS_TOKEN);
xhr.responseType = 'blob'; // Get a binary response
xhr.send(jData);
相关文章:
- 如何在生成下载文件时显示加载动画
- 直接下载文件,而不是从window.open(url)
- 如何使用javascript或html下载PDF格式的填写表单
- Javascript运行php文件,然后下载文件
- 在单击href链接的同时下载文件
- 尽管链接成功并已成功下载,但未找到NPM模块
- 通过php页面中的js强制下载txt
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 通过javascript下载文件时设置文件名
- 如何在Edge中下载图像/png数据URI
- 下载使用POST数据动态生成的文件
- 在提交时打开thankyou.html+下载PDF
- HTML锚标记无法在android平台中下载文件
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 使用xhr.onprogress可以在不耗尽内存的情况下处理大型ajax下载
- 如何使浏览器从xhr请求下载文件
- Chrome:播放正在通过fetch/XHR下载的视频
- 从XHR下载二进制文件数据,然后重新提交
- 如何使用javascript xhr(在chrome中)下载大型视频文件
- 是二进制文件(pdf, word, excel, ppt, mp3,..)下载可能使用XHR或fetch