工作正常的部分:
我已经发出了一个<form>
谁的提交调用发出了ajax
请求。同样的代码:
$.ajax({
type: 'POST',
url: '/uploaded_proto_file/',
data: formdata,
processData: false,
contentType: false,
success: function (data) {
console.log("in success")
console.log("data is --->"+data)
return;
},
error: function (data) {
console.log("in error")
return;
}
});
我可以在下面的函数中收到相同的调用。现在我需要发送一个需要在我的浏览器中自动下载的文件(在我的文档结构中)。我根据这个答案执行这个功能
def uploaded_proto_file(request):
with open(
'/Users/metal/Documents/test_pb2.py','rb') as text_file:
response = HttpResponse(FileWrapper(text_file.getvalue()), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=test_pb2.py'
return response
上面的代码运行不正常,所以我调试了一下,在filewrapper
语句中发现了这个错误
现在我稍微更改了解决方案,但是作为响应发回的文件没有自动下载,它正在控制台中打印(因为我在 ajax 函数中的成功块有 console.log(data))
更改了解决方案:
with open(
'/Users/metal/Documents/test_pb2.py','rb') as text_file:
response = HttpResponse(text_file, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=test_pb2.py'
return response
正如您在上面看到的,我删除了FileWrapper
并且至少能够将文件发送回ajax
请求。但问题仍然存在,因为文件没有自动下载。
PS:我也尝试过file
以'r','rb'等不同模式打开。
任何帮助,将不胜感激 !