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

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

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

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

Spring

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

Q&A

解決済

1回答

2246閲覧

画像ファイルをBASE64形式でエンコード

Yoshi--

総合スコア62

Java

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

Spring

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

0グッド

0クリップ

投稿2017/07/18 08:42

編集2017/07/19 07:18

java

1@GetMapping(path = "myProfile") //pathの指定がない場合は URL は/konkatsu 2 String MyList(@RequestParam Integer id, Model model){ //SpringMVCでは画面に値を渡す為にModelオブジェクトを使用 3 Profile profile = profileService.findProfile(id); 4 5 //画像ファイルをBASE64形式でエンコード 6 String encodedImage = Base64.getEncoder().encodeToString(profile.getImage()); 7 System.out.println(encodedImage); 8 9 model.addAttribute("image", encodedImage); 10 model.addAttribute("profile", profile); //第一引数はThymeleafで取り出す時に使う名前、第二引数はThymeleafに渡したいオブジェクトを指定 11 return "konkatsu/myProfile"; //遷移する画面の名前 12 }

html

1 <td><img th:src="${'data:image/png;base64,' + image}" width="250" height="150"/></td> 2 <td th:text="${profile.name}">山田</td> 3 <td th:text="${profile.gender.gender}">山田</td> 4 <td th:text="${profile.birthday}"></td> 5 <td th:text="${profile.height}"></td> 6 <td th:text="${profile.occupation.occupationName}"></td> 7 <td th:text="${profile.income}"></td> 8 <td th:text="${profile.user.mail}">duke</td> 9 <td th:text="${profile.text}"></td>

この場合、
画像が画面に表示されるのですが

どのように書き換えたら良いのでしょうか???
この理論であっていますか??

java

1String encodedImage = Base64.getEncoder().encodeToString(ここにリストProfileのimageを入れたいのです));

html

1 2 <tr th:each="profile : ${profile}"> 3 <!-- エンコードした画像の表示 --> 4 <td><img th:src="${'data:image/png;base64,' + image}" width="250" height="150"/></td> 5 <td th:text="${profile.name}">山田</td> 6 <td th:text="${profile.gender.gender}">山田</td> 7 <td th:text="${profile.birthday}"></td> 8 <td th:text="${profile.height}"></td> 9 <td th:text="${profile.occupation.occupationName}"></td> 10 <td th:text="${profile.income}"></td> 11 <td th:text="${profile.user.mail}">duke</td> <!-- 「profile」オブジェクトがもつ「user」の「mail」を表示 --> 12 <td th:text="${profile.text}"></td> 13 </tr>

同じような形で

ListのProfileで登録ユーザー一覧に画像を表示したい場合

java

1 @GetMapping(path = "usersList") 2 String usersList(@RequestParam Integer genderId, Model model){ 3 List<Profile> profile = profileService.findUsers(genderId); 4 5 6 String encodedImage = Base64.getEncoder().encodeToString(profile.getImage()); 7 System.out.println(encodedImage); 8 9 model.addAttribute("image", encodedImage); 10 model.addAttribute("profile", profile); 11 return "konkatsu/profileList"; 12 }

profile.getImage()でエラーとなってしまいます
List Profileに格納されているimageを出力したいです

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

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

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

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

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

A-pZ

2017/07/18 08:47

コメントアウトした不要な行は削除しましょう。
Yoshi--

2017/07/18 08:54

失礼いたしました、修正いたしました
guest

回答1

0

ベストアンサー

Listなどの内容を繰り返して表示する場合には、th:each を使うと良いでしょう。

投稿2017/07/18 08:50

A-pZ

総合スコア12011

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

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

Yoshi--

2017/07/18 09:12 編集

htmlを追加いたしました。th:eachを使っているのですが List の profileに格納されている画像ファイルがBASE64形式でエンコード されていないため表示できないことが現状でございます
A-pZ

2017/07/18 09:23

表示したい内容がControllerで渡しているコードがありませんが、List<Profile> の形で取得した内容を、model.addAttribute で格納していますか? また、th:each="profile : ${profile}" と、同じ名前をつけてはいけません。th:eachは複数行の内容を表示するものですから、Controllerで格納するときはきちんと複数行である名前をつけるなどしましょう。例えば、profilesやprofileListです。 th:eachの使い方ついては、th:each で検索するとさまざまなサンプルが見つかるでしょう。
Yoshi--

2017/07/19 01:24

list<Profile>のjavaを 修正いたしました。 そのControllerのところで分からなくなっております list<Profile>のとき String encodedImage = Base64.getEncoder().encodeToString(profile.getImage()); profile.getImage()でエラーになってしまいます。 listの場合の書き方は違うものなのでしょうか??
A-pZ

2017/07/19 01:27

Listなのだから複数のProfileが入っていますよね。ご自身で記載している Base64.getEncoder().encodeToString(profile.getImage()); は単一の画像に対して文字列を得る処理なのですから、画像ごとに繰り返せば良いのではないでしょうか。
Yoshi--

2017/07/19 01:46

返答ありがとうございます。 つまりは同じように単一の画像の書き方で書いて それを繰り返すということでしょうか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問