我需要将生成的文件下载作为Django REST Framework响应返回.我尝试了以下方法:
def retrieve(self, request, *args, **kwargs):
template = webodt.ODFTemplate('test.odt')
queryset = Pupils.objects.get(id=kwargs['pk'])
serializer = StudentSerializer(queryset)
context = dict(serializer.data)
document = template.render(Context(context))
doc = converter().convert(document, format='doc')
res = HttpResponse(
FileWrapper(doc),
content_type='application/msword'
)
res['Content-Disposition'] = u'attachment; filename="%s_%s.zip"' % (context[u'surname'], context[u'name'])
return res
Run Code Online (Sandbox Code Playgroud)
但它返回一个msword文档json.
如何让它开始下载为文件?
最近我开始使用node.js. 在我的一个项目中遇到一个要求时,我遇到了一个问题,我应该能够动态地将一些数据写入csv文件并让它作为弹出窗口提示为用户下载(带有保存和取消选项 - 正如我们通常的那样)看到).谷歌搜索了一段时间后,我决定使用csv npm模块https://github.com/wdavidw/node-csv-parser.我能够将数据写入文件并使用此模块保存.我想提示弹出一个用于保存此文件的/不保存文件.
我的代码看起来像这样:
// Sample Data
var data = [["id", "subject1", "subject2", "subject3"], ["jack", 85, 90, 68], ["sam", 77, 89, 69]]
// Server Side Code
var csv = require('../../node_modules/csv');
var fs = require('fs');
createCSV = function(data, callback) {
csv().from(data).to(fs.createWriteStream('D:/test.csv')) // writing to a file
}
// Client side call sample
$("#exportToCSV").click(function() {
callToServer.createCSV(data);
return false;
});
Run Code Online (Sandbox Code Playgroud)
就编写csv文件而言,这是有效的.
任何帮助是极大的赞赏.-谢谢
我的页面生成如下URL:blob:http%3A//localhost%3A8383/568233a1-8b13-48b3-84d5-cca045ae384f,blob具有文件数据.我将这个作为文件下载到IE 11以外的每个浏览器中.如何在IE 11中下载此blob?新选项卡打开并持续刷新.
var file = new Blob([data], { type: 'application/octet-stream' });
var reader = new FileReader();
reader.onload = function (e) {
var text = reader.result;
}
reader.readAsArrayBuffer(file);
var fileURL = URL.createObjectURL(file);
var filename = fileURL.replace(/^.*[\\\/]/, '');
var name = filename + '.doc';
var a = $("<a style='display: none;'/>");
a.attr("href", fileURL);
a.attr("download", name);
$("body").append(a);
a[0].click();
a.remove();
Run Code Online (Sandbox Code Playgroud)