以zip格式下载多个Restful资源
Download multiple Restful resources as zip
经过几个小时的阅读,我不确定最好的方法。我有一个用户选择的restful资源URL(同一域)列表,我想将它们打包以便立即下载。任何指向"正确"方法的指针都会很棒:)
我正在使用Django Rest Framework,并尝试在前端使用JSZip.js,但只是收到了垃圾-zip文件无法打开(我认为我在某个地方的类型有问题…)
$(document).ready(function () {
$.ajax({
type: "GET",
url:"http://127.0.0.1:8000/data/test/?format=fits",
contentType: "application/fits",
accepts: "application/fits",
})
.done(function(data) {
console.log("Success");
var zip = new JSZip();
// create a file
zip.file(data, 'nameoffile.fits');
var content = null;
if (JSZip.support.uint8array){
content = zip.generate({type:"uint8array"});
} else {
content = zip.generate({type:"string"});
};
$('#download').click(function(){
var blob = zip.generate({type:"blob"});
saveAs(blob, "downloadable.zip");
});
})
.fail(function(data) {
console.log("Failed");
})
.always(function() {
console.log("In Always");
});
});
我看到两个问题:
- 是
zip.file('nameoffile.fits', data)
,而不是zip.file(data, 'nameoffile.fits')
$.get
只处理文本内容,但FITS文件看起来像二进制文件
$.get
尝试从其编码(通常为UTF-8)对内容进行解码。对于二进制文件,解码步骤会破坏内容。您可以通过将内容转换为blob并使用saveAs
下载来检查此步骤
要解决这个问题,请参阅本页:使用JSZipUtils、带有responseType = 'arraybuffer'
的XMLHttpRequest
,或者任何允许下载二进制内容的ajax框架。
相关文章:
- Backbone.js restful json API design
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- WebResources嵌入式资源和Javascript如何在另一个嵌入式资源中使用它们
- 如何在构建node-webkit应用程序后获取外部资源
- ADF:有条件地加载javascript资源
- Javascript嵌入式图像资源
- 内容安全策略:页面's设置阻止加载资源
- 用于查询错误转换的角度资源返回列表
- 未能在Laravel中加载资源
- LINK rel=子资源用于什么
- 如何在JS文件中获取资源(.resx)字符串
- 在Hapi.js Restful API中了解请求IP
- 我可以在Nodewebkit中保护javascript以外的资源吗
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- js文件未加载js控制台say's”;不允许加载本地资源”;
- 以zip格式下载多个Restful资源
- RESTful GET资源应该如何接受日期时间参数
- 检查客户端是否可以访问资源的 RESTful 方法是什么?
- 如何在RESTful API中使用嵌套资源
- 带相关资源的RESTful API