Angularjs 使用angular js post到django后端会产生414错误
我正试图使用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那么大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$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(...)