Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie ich ein Bild auf meinem Server in einer Java-Webanwendung speichere und abrufe

anstatt es auf mein C-Laufwerk zu schreiben, werde ich es auf dem Server ausführen, aber wo soll ich das Bild speichern, um es später abzurufen und in einer xhtml-Datei anzuzeigen?

Das hängt davon ab, wie viel Kontrolle Sie über die Konfiguration des Servers haben. Ideal wäre es, einen festen Pfad außerhalb des Tomcat-Webapps-Ordners zu konfigurieren. Beispiel:/var/webapp/upload . Sie können diesen Pfad als VM-Argument oder Umgebungsvariable festlegen, sodass Ihre Webanwendung ihn programmgesteuert abrufen kann, ohne dass der Code geändert werden muss.

Wenn Sie beispielsweise -Dupload.location=/var/webapp/upload als VM-Argument angeben , können Sie den Upload wie folgt abschließen:

Path folder = Paths.get(System.getProperty("upload.location"));
String filename = FilenameUtils.getBaseName(uploadedFile.getName()); 
String extension = FilenameUtils.getExtension(uploadedFile.getName());
Path file = Files.createTempFile(folder, filename + "-", "." + extension);

try (InputStream input = uploadedFile.getInputStream()) {
    Files.copy(input, file, StandardCopyOption.REPLACE_EXISTING);
}

String uploadedFileName = file.getFileName().toString();
// Now store it in DB.

Um die Datei zurückzuliefern, wäre es am besten, den Upload-Speicherort als separaten <Context> hinzuzufügen zu Kater. Z. B.

<Context docBase="/var/webapp/upload" path="/uploads" />

Auf diese Weise können Sie direkt über http://example.com/uploads/foo-123456 darauf zugreifen .ext

Wenn Sie keine Kontrolle über die Konfiguration des Servers haben, dann ist das Speichern in der DB oder das Senden an einen Drittanbieter-Host wie Amazon S3 die beste Wahl.

Siehe auch: