Django:上传的文件在request.FILES中不可用,除非你先调用request.body

时间:2017-12-21 02:25:49

标签: django file upload

我使用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) {
    }
});

0 个答案:

没有答案