質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2006閲覧

Spring Boot S3から画像をダウンロード

encho

総合スコア182

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2020/03/20 00:50

編集2020/03/20 01:58

#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; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

アクセスパスが /profile/1 の場合

<img src="image" />

<img src="/profile/image" />

とアクセスされるためマッピング先の `/profile/{userId}' では受け付けれません。相対パスを理解してください。

上記の場合は

<img src="/image" />

としましょう。

投稿2020/03/20 02:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

encho

2020/03/20 02:36

パスの問題だったのですね。 ありがとうございます。助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問