【发布时间】:2017-02-04 19:25:58
【问题描述】:
我正在尝试使简单的文件上传成为可能,但 Spring 不想和我一起玩。
这是文件上传的端点 - 目前没有做很多:
@PostMapping(WordEmbeddingApiPaths.UPLOAD_MODEL)
@RequestMapping(method=RequestMethod.POST, consumes = {"multipart/form-data"})
public ResponseEntity<WordVectorListDto> uploadModel(
@ModelAttribute("file") MultipartFile file,
// @RequestBody Object obj,
RedirectAttributes redirectAttributes) {
LOGGER.debug("POST uploadModel");
return new ResponseEntity<WordVectorListDto>((WordVectorListDto)null, HttpStatus.OK);
}
我尝试了几件事,但都以不同的错误告终。我刚刚尝试使用@RequestBody,因为我认为这可能是诀窍,但后来我得到一个例外:
Content type 'multipart/form-data;boundary=----WebKitFormBoundarycV8dFSvDV6U9OwJq' not supported
或
Content type 'multipart/form-data' not supported
取决于我刚刚尝试过的。
如果我选择@RequestPart("file") MultipartFile file 我明白了
Required request part 'file' is not present
@RequestParam("file") 与此类似。
我不知道这有什么困难,但我希望有人能告诉我如何从客户端获取该文件。
您可以在下面看到我发送到端点的请求:
这个请求可以吗?
网络客户端:
var uploader = $scope.uploader = new FileUploader({
url: 'http://localhost:8080/rest-api/dl4j/we/uploadModel'
});
uploader.onAfterAddingFile = function($modelFile) {
console.info('onAfterAddingFile', $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");
}
);
};
index.html
<label class="btn btn-default btn-file" style="float:right;">
Upload
<input
type="file"
style="display: none;"
name="file"
multiple
nv-file-select
uploader="uploader">
</label>
【问题讨论】:
标签: angularjs spring http angular-file-upload