spring bootのstaticフォルダ内に画像をuploadする方法(失敗談)②

前回の記事はこちら↓

スポンサーリンク

画像表示のためのメソッド作成

data.append(“data:~”);と書いておくと、HTMLでは値を受け取るだけで表示ができます。
Requestメソッド内では、下記photoViewメソッドを使用して、modelで値を受け渡してHTML表示させます。

public String photoView(String employeePhoto) {
// 画像を検索してbyteとしてViewへ受け渡す
String uploadPath = "src/main/resources/static/upload/" + employeePhoto;
// 画像データストリームを取得する
try (FileInputStream fis = new FileInputStream(uploadPath);) {
StringBuffer data = new StringBuffer();
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
// バイト配列に変換
while (true) {
int len = fis.read(buffer);
if (len < 0) {
		break;
		}
		os.write(buffer, 0, len);
}
// 画像データをbaseにエンコード
String base64 = new String(
org.apache.tomcat.util.codec.binary.Base64.encodeBase64(os.toByteArray()),"ASCII");
// 画像タイプはJPEG
// Viewへの受け渡し。append("data:~~)としているとtymleafでの表示が楽になる
			data.append("data:image/jpeg;base64,");
			data.append(base64);

return data.toString();

} catch (Exception e) {		e.printStackTrace();
return null;
}
}


// 画像をViewに渡す
@RequestMapping("/top")
public String top(@AuthenticationPrincipal LoginAccount account, Model model) {
// employeNumberを利用してemployee nameを検索。そしてviewへ受け渡す
EmployeeEntity user = repository.findByEmployeeNumber(account.getUsername());
		model.addAttribute("userName", user.getEmployeeName());

// 写真データを受け渡し
model.addAttribute("userPhoto", photoView(user.getEmployeePhoto()));

return "top";
}

<code>

以上が、遠回りな画像表示でした…

タイトルとURLをコピーしました