我使用fileupload
jquery脚本上传一个小的简单文件。在Django服务器端,我收到了POST,但request.FILES
为空。
但是,如果我在调用任何其他请求的API /宏之前调用request.body
,则上传的文件信息会显示在request.FILES
中。
这是HTTP中的量子理论吗?有人可以解释一下吗?处理上传文件的正确方法是什么?
问题并非文件上传所特有。它发生在所有ajax帖子上。我怀疑可能需要某种设置才能让底层系统自动处理传入的流并从中构造对象。
这是服务器端代码段:
class FileUploadView(View):
def post(self, request):
assert isinstance(request, HttpRequest)
# temporary solution in order to trigger the underlying system to
# construct objects from incoming stream.
bb = request.body
field_name = 'data_file'
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
filename = form.files[field_name].name
if FileDataSource.allowed_file_type(filename):
self.save_file(filename,
request.FILES[field_name],
UPLOAD_FOLDER)
self.register_datasource(filename, UPLOAD_FOLDER)
return self.reply_features(filename=filename)
else:
pass
这是客户端jquery:
$("#fileupload").fileupload({
dataType: 'json',
success: function (data) {
console.log(data)
},
error: function(data) {
}
});