【发布时间】:2019-08-01 20:51:35
【问题描述】:
Angularjs $http.post 给出了 404 异常,但所有其他方法都可以使用相同的代码,我正在尝试通过 spring boot 上传文件
在我去年做的另一个项目中,相同的代码可以正常工作,当我发送没有文件的信息时,相同的 $http.post 也可以工作
service.js
function addCompanyDoc(file, id) {
var deferred = $q.defer();
var data = new FormData();
data.append('file', file);
var config = {
transformRequest: angular.identity,
transformResponse: angular.identity,
headers: {
'Content-Type': undefined
}
}
console.log('appService file ');
console.dir(file); //cheking if file is available
$http.post('http://localhost:8080/listed/welcome/company/doc/' + id,
data, config)
.then(function(response) {
deferred.resolve(response.data);
},
function(errResponse) {
alert(errResponse.data.errorMessage);
console.error('Error while uploading company doc', errResponse);
this.flag = 'failed';
deferred.reject(errResponse);
});
return deferred.promise;
}
弹簧靴
@RequestMapping("/welcome")
public class controllers{
@RequestMapping(value = "/company/doc/{id}", method =
RequestMethod.POST, consumes = {"multipart/form-data" })
@ResponseBody
public ResponseEntity<Void> saveCompanyDoc(@RequestParam("file")
MultipartFile file, @PathVariable final int id){
//....uploading to DB
}
}
angularjs 向 spring boot 发送一个文档,spring 上传到 DB / 发送到一个文件夹。 使用 angularjs 1.7 和 spring boot 2.*
工作正常:-)【问题讨论】:
-
您永远不会将任何内容附加到 FormData 对象。请注意,您不需要
$q.defer(),因为$http方法已经返回$q承诺 -
谢谢@charlietfl 我猜当我将代码复制到stackoverflow时附加被删除了,但它在那里并且还删除了$q并且发生了相同的结果:-(
-
现在公司 controller.js 处理函数 success & error() bur 仍然没有运气 :: var req = { method: 'POST', url: REST_SERVICE_URI+'company/doc/'+id, config , 数据: formData } return $http(req);在后端我删除了ResponseBody并制作了整个类RestController,我尝试在RequestParam的空间中使用RequestPart :: 仍然没有运气
标签: angularjs spring spring-boot