#S3上にある"sample.jpg"という画像をダウンロードし画面に表示をしたい
ダウンロードとアップロードだけのプロジェクトを作成したときは
問題なく動いたのですが、他のアプリケーションに組み込もうとしたときにエラーが発生します。
AWSへのユーザー設定やRegionなどに関しては問題はないと考えています。
image部分に関してはintなどが関わっていないのにも関わらずjava.lang.NumberFormatException
が発生する理由がわかりませんでした。
何かアドバイスをいただけると幸いです。
##発生するエラー
error
1org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "image"
##Controller
java
1@GetMapping("/profile/{userId}") 2 String showProfile(@PathVariable("userId") Integer userId, 3 Model model) { 4 User user = userRepository.findById(userId).orElseGet(null); 5 model.addAttribute("user",user); 6 return "profile/userProfile"; 7 } 8 //画像のダウンロード 9 @GetMapping(value = "/image", 10 headers = "Accept=image/jpeg, image/jpg, image/png, image/gif", 11 produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE}) 12 @ResponseBody 13 public ResponseEntity<BufferedImage> getImage(){ 14 return ResponseEntity.ok().body( 15 s3DownloadHelper.getImage("sample.jpg")); 16 } 17
##userProfileのHTML画像部分
HTML
1<h1>プロフィール画面</h1> 2 <hr /> 3 <h2>Get S3 image via Controller</h2> 4 <img src="image" />
#Helper
@Component public class S3DownloadHelper{ private static final String S3_BUCKET_PREFIX = "s3://"; private static final String DIRECTORY_DELIMITER = "/"; @Value("sample") private String bucketName; @Autowired ResourceLoader resourceLoader; public BufferedImage getImage(String imageFilePath){ Resource resource = resourceLoader.getResource( new StringBuilder() .append(S3_BUCKET_PREFIX) .append(bucketName) .append(DIRECTORY_DELIMITER) .append(imageFilePath) .toString()); BufferedImage image = null; //InputStreamで読み込み try(InputStream inputStream = resource.getInputStream()){ image = ImageIO.read(inputStream); }catch (IOException e){ e.printStackTrace(); } return image; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/20 02:36