是的,这是如何将文件从jquery客户端上传到django服务器的另一个问题,除了在线找到的~15个解决方案都没有为我工作。 (并且请原谅我的noobness - 我一般不常使用Web框架。)
所以,设置如下:
客户方:
var formData = new FormData();
formData.append('file', response.output['file'], response.output['name'])
$.ajax({
url: "djangourl",
data: formData,
processData: false,
contentType: false, // also tried setting 'multipart/form-data', no profit
mimeType: 'multipart/form-data',
type: 'POST',
dataType: 'json',
cache: false,
success: function(data){
alert(JSON.stringify(data));
},
error: function(data){
alert(JSON.stringify(data));
}
});
服务器端:
@require_http_methods(["POST"])
@csrf_exempt
def upload_document(request, project_id):
try:
if request.FILES:
return HttpResponse(json.dumps("Yay!", default=json_util.default), status=200, content_type="application/json")
else:
return HttpResponse(json.dumps("Nah.", default=json_util.default), status=200, content_type="application/json")
except Exception as e:
return HttpResponseServerError(str(e))
每次尝试这个时,我都会得到空的request.FILES
,任何想法为什么?
更新:事实证明,request.POST包含绑定到“[object FileList]”的键'file'(字面意思是这个字符串),如果这有助于澄清情况无论如何。
答案 0 :(得分:1)
事实证明,我从前端(基于Aurelia的app)收到的response.output [' file']是一个FileList对象而不是单个文件(尽管没有multiple
说明符被赋予<input>
标签)。结束主题,谢谢。