使用ng-file-upload上传时,在flask服务器上,Request.files对象为空

时间:2017-12-14 13:00:44

标签: python angularjs file-upload flask ng-file-upload

我使用ng-file-upload上传xls或xlsx文件,下面是我的html代码

<div ngf-drop ngf-select ngf-change="checkFile($invalidFiles);" ngf-model-invalid="invalidFiles" ng-model="file" class="center" ngf-drag-over-class="'dragover'" ngf-pattern="'.xls,.xlsx'">

<button class="some-class" ng-click="upload(file)"></button>

角度控制器:

$scope.upload = function (file) {
    if (file) {
            var upload = Upload.upload({
                url: API.url('upload'),
                data: {
                  file: file
                },
                headers:{ // tried passing different headers as well 
                    "Content-Type":"multipart/form-data"
                 }

            });
            upload.then(function (resp) {
                //Some Operation
            }, null, function (evt) {
                //Some Operation
            });
    }
};

Flask服务器:

    def upload(self):
        params = self.get_params(request)
        file = request.files['file'] ###This object is empty.
        result = self._upload_file(file)
        return "Dummy"

我关注了服务器端的this文档。 我认为问题来自客户端,可能是我发送了一些不好的请求,因为烧瓶服务器正在抛出400.所以我尝试发送&#39; multipart / form-data&#39;标题,但没有运气,也通过显式发送表单数据。 我也找了一些像sol-1这样的解决方案。 我在ng-file-upload文档中找不到任何可以解决我问题的内容。

如果需要,我也可以发送请求标题。

我可能会错过很小的一部分,有人可以指出我。

1 个答案:

答案 0 :(得分:0)

标题 默认值已在帖子请求中。添加"Content-Type":"multipart/form-data"只是压倒一切。没有它就试试吧。