[Java] Laden Sie ein Bild hoch und konvertieren Sie es in Base64

Überblick

Code

Bildschirm hochladen

--JSP des Upload-Bildschirms, der zuerst angezeigt werden soll

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Java Sample</title>
  </header>
  <body>
    <h1>Hello</h1>
    <form action="upload" method="post" enctype="multipart/form-data">
      <input type="hidden" name="action_name" value="upload" />
      <input type="file" name="file" />
      <button>Upload</button>
    </form>
  </body>
</html>

Bildaufnahmevorgang

package com.example.controller;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.example.action.Action;
import com.example.action.UploadAction;

@WebServlet(urlPatterns = { "/upload" })
@MultipartConfig
public class UploadController extends HttpServlet {

  @Override
  protected void doPost(
    HttpServletRequest request,
    HttpServletResponse response
  )
    throws ServletException, IOException {
    String strActionName = request.getParameter("action_name");
    Action action = getInstance(strActionName);
    String forwardPath = action.execute(request);
    RequestDispatcher rd = request.getRequestDispatcher(forwardPath);

    rd.forward(request, response);
  }
  
  private static Action getInstance(String actionName) {
    switch (actionName) {
      case "upload":
        return new UploadAction();
      default:
        return null;
    }
  }
}
package com.example.action;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Base64;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;

public class UploadAction extends Action {

  @Override
  protected String processRequest(HttpServletRequest request) {
    try {
      Part filePart = request.getPart("file");
      InputStream fileContent = filePart.getInputStream();
      byte[] byteArray = getByteArray(fileContent);
      String base64String = Base64.getEncoder().encodeToString(byteArray);

      System.out.println("filePart: " + filePart);
      System.out.println("fileContent: " + fileContent);
      System.out.println("byteArray: " + byteArray);
      System.out.println("base64String: " + base64String);

      request.setAttribute("image", base64String);
    } catch (Exception e) {}
    return "image.jsp";
  }

  private static byte[] getByteArray(InputStream is) throws Exception {
    ByteArrayOutputStream b = new ByteArrayOutputStream();
    BufferedOutputStream os = new BufferedOutputStream(b);
    while (true) {
      int i = is.read();
      if (i == -1) break;
      os.write(i);
    }
    os.flush();
    os.close();
    return b.toByteArray();
  }
}

Bildschirm

--JSP zum Anzeigen von Bildern

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<jsp:useBean id="image" scope="request" type="java.lang.String" />
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Java Sample</title>
  </header>
  <body>
    <h1>Hello</h1>
    <img src="data:image/png;base64,<%= image %>" />
  </body>
</html>

--Base64 kann auch im src-Attribut des img-Tags festgelegt werden, also binden Sie es ein. ――Png Es ist nicht gut, entscheidend zu sein ――Es scheint, dass Sie es durch serverseitige Verarbeitung erhalten können, aber es war nicht möglich, die Methode zu verwenden, die unmittelbar nach Google herauskam ――Wenn Sie dies bisher tun können, können Sie das Bild hochladen und der Vorschaubildschirm wird angezeigt.

Zusammenfassung

Recommended Posts

[Java] Laden Sie ein Bild hoch und konvertieren Sie es in Base64
Dies und das über Base64 (Java)
Java und JavaScript
XXE und Java
Laden Sie Notizen in Java in den Azure-Speicher hoch und laden Sie sie herunter
[Anfänger] Laden Sie Bilder und Dateien mit Spring hoch [Autark]
Laden Sie Notizen in Java auf S3 hoch und laden Sie sie herunter
Java ermöglicht die Extraktion von PDF-Text und Bildern
Getter und Setter (Java)
CarrierWave Laden Sie mehrere Bilder hoch
[Java] Thread und ausführbar
Java wahr und falsch
[Java] Vergleich von Zeichenketten und && und ||
Java - Serialisierung und Deserialisierung
[Java] Argumente und Parameter
[Java] Verzweigen und Wiederholen
[Java] Variablen- und Typtypen
Java (Klasse und Instanz)
[Java] Überladen und überschreiben
Studiere Java # 2 (\ mark and operator)
Java Version 8 und neuere Funktionen
[Rails API + Vue] Laden Sie Bilder mit Active Storage hoch und zeigen Sie sie an
[Java] Unterschied zwischen == und gleich
[Java] Stapelbereich und statischer Bereich
[Java] Generics-Klasse und Generics-Methode
Java-Programmierung (Variablen und Daten)
Java-Ver- und Entschlüsselung PDF
So minimieren Sie Java-Images
Speichern und zeigen Sie mehrere Bilder an
Definition und Instanziierung von Java-Klassen
[Java] Über String und StringBuilder
[Java] HashCode und gleich Überschreibung
☾ Java / Repeat-Anweisung und Repeat-Steueranweisung
Vor- und Nachteile von Java
Java (bedingte Verzweigung und Wiederholung)
Über Java-Paket und Import
C # und Java überschreiben Story
Java abstrakte Methoden und Klassen
Java während und für Anweisungen
Java-Kapselung und Getter und Setter
Base64 Encoder dies und das
[Rails] So laden Sie Bilder mit Carrierwave und Fog-Aws in AWS S3 hoch
[Rails] So laden Sie Bilder mit refile und refile-s3 in AWS S3 hoch
Informationen zu statischen und nicht statischen Java-Methoden
Ich habe PHP- und Java-Konstruktoren verglichen
Verwenden Sie Java mit MSYS und Cygwin
Verteilte Ablaufverfolgung mit OpenCensus und Java
[Java] Unterschied zwischen Hashmap und HashTable
Deklaration, Initialisierung und Typen von Java-Variablen
Java Excel Insertion und Bildextraktion
Installieren Sie Java und Tomcat mit Ansible
AWS SDK für Java 1.11.x und 2.x.
[Java] Grundtypen und Anweisungshinweise
Java-Veröffentlichungsdatum und EOL-Zusammenfassung
Über Biocontainer fastqc und Java
Java für Anfänger, Ausdrücke und Operatoren 1
Java Primer Series (Variationen und Typen)
Beispiel für Codierung und Decodierung in Java
[Java-Anfänger] Über Abstraktion und Schnittstelle
Laden Sie Dateien mit Java HttpURLConnection hoch