Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用angular js post到django后端会产生414错误_Angularjs_Django - Fatal编程技术网

Angularjs 使用angular js post到django后端会产生414错误

Angularjs 使用angular js post到django后端会产生414错误,angularjs,django,Angularjs,Django,我正试图使用angular js将图像发送到django后端,正如您在上面所看到的,但我在后端收到一个错误,该错误表示: [22/Dec/2018 12:59:34]“发布/动态马赛克/rs/提交HTTP/1.1”200 4 [22/Dec/2018 12:59:34]代码414,消息请求URI太长 [22/Dec/2018 12:59:34]“414- 我认为POST可以发送几乎任何大小的请求,图像甚至没有1-2MB那么大 有人知道原因吗?可能我没有正确使用angular js$http服务。

我正试图使用angular js将图像发送到django后端,正如您在上面所看到的,但我在后端收到一个错误,该错误表示:

[22/Dec/2018 12:59:34]“发布/动态马赛克/rs/提交HTTP/1.1”200 4

[22/Dec/2018 12:59:34]代码414,消息请求URI太长

[22/Dec/2018 12:59:34]“414-

我认为POST可以发送几乎任何大小的请求,图像甚至没有1-2MB那么大


有人知道原因吗?可能我没有正确使用angular js$http服务。

保存
Blob
类型有点不同

        var reader = new FileReader();
        reader.onload = function(){
            var fileData = reader.result;

            $http({
                url: 'rs/submit',
                method: 'POST',
                data: {
                    'img': fileData,
                    'query': query,
                    'limit': limit
                }
            })
            .then(function successCallback(response) {

            }, function errorCallback(response) {

            });
        };
        reader.readAsDataURL(document.getElementById('submitFileInput').files[0]);
也许你也应该考虑< /P> UPD:这是一个供您考虑的外部文件

Angular的默认
transformRequest
函数将尝试序列化 我们的FormData对象,所以我们用identity函数覆盖它 保持数据不变

Angular的帖子默认内容类型标题 PUT请求是application/json,所以我们也要更改它。 通过设置“内容类型”:未定义,浏览器将设置 内容类型为我们的多部分/表单数据,并填写正确的 边界。手动设置“内容类型”:将显示多部分/表单数据 无法填写请求的边界参数


这是可行的,但是你能解释一下{transformRequest:angular.identity,headers:{'Content-Type':undefined}}的作用吗?如果没有这些,它似乎无法工作。嘿,添加了一个额外的资源,请查看
var fd = new FormData();
fd.append('img', reader.result);
fd.append('query', query);
fd.append('limit', limit);
                
$http.post('rs/submit', fd, {
    transformRequest: angular.identity,
    headers: {'Content-Type': undefined}
}).then(...)