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

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

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

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

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Q&A

1回答

3032閲覧

【Java】HTMLのfileタグの画像を別ページでプレビュー表示させたい

sequence

総合スコア29

Java

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

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

0グッド

0クリップ

投稿2017/01/23 11:16

編集2017/01/23 23:15

やりたいこと

画像をHTMLのfileタグで挿入をします。
その画像をenctype="multipart/form-data"にてPostして、
PlayFrameworkのControllerで受け取ります。
それを新しいHTMLのページで表示をさせたいです。

環境

  • Java8
  • PlayFramework 2.4

現状

下記のコードで画像をFilePart形式で受け取ることはできます。

MultipartFormData multipartFormData = request().body().asMultipartFormData(); FilePart image = multipartFormData.getFile("image");

それをS3にアップロードして、CloudFront経由でダウンロードして表示させることは可能なのですが、
わざわざアップロードするのは容量・速度的によろしくないと思うので、
どうにかJavaから何かしらの形でHTMLへデータを渡して画像を表示させたいです。

どなたか、方法をご教授ください。
宜しく御願い致します。

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

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

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

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

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

guest

回答1

0

リクエストで受け取った画像ファイルをbase64エンコーディングして、レスポンスとして返すHTMLに含めるという方法はどうでしょうか。

java

1 2package controllers; 3 4import java.io.File; 5import java.io.IOException; 6import java.nio.file.Files; 7import java.nio.file.Paths; 8import java.util.Base64; 9 10import play.mvc.Controller; 11import play.mvc.Http.MultipartFormData; 12import play.mvc.Http.MultipartFormData.FilePart; 13import play.mvc.Result; 14 15/** 16 * This controller contains an action to handle HTTP requests 17 * to the application's home page. 18 */ 19public class HomeController extends Controller { 20 21 public Result upload() throws IOException { 22 MultipartFormData multipartFormData = request().body().asMultipartFormData(); 23 FilePart<File> image = multipartFormData.getFile("picture"); 24 // アップロードされたファイルをbyte配列に変換する 25 byte[] bytes = Files.readAllBytes(Paths.get(image.getFile().getAbsolutePath())); 26 // byte配列をbase64に変換する 27 String base64 = Base64.getEncoder().encodeToString(bytes); 28 // imgタグのsrcにurlスキームdataを用いてbase64で出力する 29 return ok(String.format("<html><body><img src='data:%s;base64,%s' /></body></html>", image.getContentType(), base64)) 30 .as("text/html; charset=iso-8859-1"); 31 } 32}

urlスキームdataについては以下がわかりやすいかと思います。
https://www.softel.co.jp/blogs/tech/archives/2117

投稿2017/01/24 03:21

makotribe

総合スコア217

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問