我一直在关注this,但似乎我的问题出在其他地方。我正在尝试上传文件。 input
目前定义为:
<input
type="file"
style="display: none;"
name="file"
multiple
nv-file-select
uploader="uploader">
这是上传的执行方式:
var uploader = $scope.uploader = new FileUploader({
url: 'http://localhost:8080/rest-api/dl4j/we/uploadModel'
});
uploader.onAfterAddingFile = function($modelFile) {
var fd = new FormData();
fd.append('file', $modelFile.file);
$http.post($modelFile.url, fd, {
headers: {
'Content-Type': undefined
},
transformRequest: angular.identity
})
.then(
function (data) {
alert("upload success");
},
function (data, status) {
alert("upload error");
}
);
};
这是Spring REST端点:
@PostMapping(WordEmbeddingApiPaths.UPLOAD_MODEL)
@RequestMapping(method=RequestMethod.POST, headers={"Content-Type=multipart/form-data"})
public ResponseEntity<WordVectorListDto> uploadModel(
@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
LOGGER.debug("POST uploadModel");
return new ResponseEntity<WordVectorListDto>((WordVectorListDto)null, HttpStatus.OK);
}
问题是,Spring会抛出一个异常,告诉我参数file
不存在:
org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present
这是请求信息:
如何使此文件上传工作?
答案 0 :(得分:0)
我猜它可能与内容类型有关 在你的代码中我看到了:
$http.post($modelFile.url, fd, {
headers: {
'Content-Type': undefined
},
transformRequest: angular.identity
})
所以你要定义一个未定义的内容类型;你应该设置multipart/form-data
尝试将此内容类型
我希望它有用
安吉洛