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]);
我正尝试使用angular js将图像发送到django后端,如您在上面看到的,但是后端出现错误,提示:
[22 / Dec / 2018 12:59:34]“ POST / dynamic-mosaic / rs / submit 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服务。
答案 0 :(得分:2)
保存Blob
类型有点不同
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(...)
可能您还应该考虑使用similar answer
UPD:这是一个外部resource供您考虑
Angular的默认
transformRequest
函数将尝试序列化 我们的FormData对象,所以我们用identity函数覆盖它以 保持数据不变。Angular用于POST的默认Content-Type标头 PUT请求是application / json,因此我们也要更改它。 通过设置“ Content-Type”:未定义,浏览器将 内容类型为我们的multipart / form-data并填写正确 边界。手动设置“内容类型”:multipart / form-data将 无法填写请求的边界参数。