Mysql
 sql >> Database >  >> RDS >> Mysql

Come salvo e recupero un'immagine sul mio server in una webapp java

Invece di scriverlo sull'unità C, lo eseguirò sul server, ma dove dovrei archiviare l'immagine per recuperarla in seguito e visualizzarla in un file xhtml?

Dipende da quanto controllo hai sulla configurazione del server. L'ideale sarebbe configurare un percorso fisso all'esterno della cartella delle app Web Tomcat. Ad esempio, /var/webapp/upload . Puoi impostare questo percorso come argomento VM o variabile di ambiente in modo che la tua webapp possa recuperarlo a livello di codice senza la necessità di modificare il codice.

Ad esempio, quando si specifica come argomento VM -Dupload.location=/var/webapp/upload , puoi completare il caricamento come segue:

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.

Per quanto riguarda la restituzione del file, l'ideale sarebbe aggiungere il percorso di caricamento come <Context> separato a Tomcat. Es.

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

In questo modo puoi accedervi direttamente da http://example.com/uploads/foo-123456 .ext

Se non hai il controllo sulla configurazione del server, allora, l'archiviazione nel DB o l'invio a un host di terze parti come Amazon S3 è la soluzione migliore.

Vedi anche: