0
400を返すGET:春ブート要求、私は次のように画像をアップロードするための私のポストの要求を持っている画像
@RequestMapping(method = RequestMethod.POST, value = BASE_PATH)
public ResponseEntity<?> createFile(@RequestParam("file") MultipartFile file, HttpServletRequest servletRequest){
URI localUri = null;
try{
imageService.createImage(file);
final URI localhostUri = new URI(servletRequest.getRequestURL().toString() + "/")
.resolve(file.getOriginalFilename() + "/raw");
localUri = localhostUri;
}catch (IOException e){
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Could not upload " + file.getOriginalFilename() + "=>" + e.getMessage());
}catch (URISyntaxException e) {
e.printStackTrace();
}
return ResponseEntity.created(localUri)
.body("Successfully Uploaded " + file.getOriginalFilename());
}
そして次は、一度に画像を取り込むためのGETメソッドである:
@RequestMapping(method = RequestMethod.GET, value = BASE_PATH + "/" + FILENAME + "/raw")
@ResponseBody
public ResponseEntity<?> oneRawImage(@PathVariable String filename){
try{
Resource file = imageService.findOneImage(filename);
return ResponseEntity.ok()
.contentLength(file.contentLength())
.contentType(MediaType.IMAGE_JPEG)
.body(new InputStreamResource(file.getInputStream()));
}catch (IOException e){
return ResponseEntity.badRequest()
.body("Couldn't Find" + filename + "=>" + e.getMessage());
}
}
POSTを実行すると、ファイルがアップロードされたことを示す適切な応答が得られます(返信要求がtryブロック外にあるため、わかりません)。以下は応答です。
* Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
> POST /images HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.49.0
> Accept: */*
> Content-Length: 69927
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------
b5f1ef58e19bbb8d
>
< HTTP/1.1 100
< HTTP/1.1 201
< Location: http://localhost:8080/images/image2.jpg/raw
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 32
< Date: Wed, 14 Jun 2017 18:24:06 GMT
<
* Connection #0 to host localhost left intact
Successfully Uploaded image2.jpg
しかし、私は投稿画像を取得するためのGETリクエストを実行しようとするとき、私は次のエラーが表示されます
Couldn't Findimage2.jpg=>ServletContext resource [/fileupload-dir/image2.jpg] cannot be resolved to URL because it does not exist
私は複数の方法でデバッグを試みたが、成功しませんでした。バネの助けがあれば幸いです!ありがとう
は '/ fileupload-dir /'が正しくマップされていますか?提供されたコードからはわかりません - あなたのメソッドは '../ raw'にマップされているようです。 – ochi
@ochiこれは面白いです、findOneImageサービスメソッドで、私は実際にresourceLoader.getResource(" file: "+ UPLOAD_ROOT + "/" +ファイル名)。私は「:」の使用を正確に理解していませんでしたが、問題がどこにあるのかを理解していました。 – Omkar
あなたの質問タイトルは誤解を招いています...タイトルには404(リソースが見つかりませんでした)が表示されていますが、実際には400(悪いリクエスト)が届いています - 今私たちは理由を知っています... – ochi