sql >> Databáze >  >> RDS >> Mysql

Jak uložím a načtu obrázek na svém serveru v java webové aplikaci

místo zápisu na disk C jej spustím na serveru, ale kam bych měl obrázek uložit, abych jej mohl později načíst a zobrazit v souboru xhtml?

To závisí na tom, jak velkou kontrolu nad konfigurací serveru máte. Ideální by bylo nakonfigurovat pevnou cestu mimo složku Tomcat webapps. Například /var/webapp/upload . Tuto cestu můžete nastavit jako argument virtuálního počítače nebo proměnnou prostředí, aby ji vaše webová aplikace mohla načíst programově bez nutnosti měnit kód.

Například při zadávání jako argument virtuálního počítače -Dupload.location=/var/webapp/upload , můžete nahrávání dokončit následovně:

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.

Pokud jde o zpětné doručení souboru, nejideálnější by bylo přidat místo pro nahrání jako samostatný <Context> k Tomcatovi. Např.

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

Tímto způsobem k němu můžete přistupovat přímo pomocí http://example.com/uploads/foo-123456 .ext

Pokud nemáte nulovou kontrolu nad konfigurací serveru, pak je nejlepší volbou uložení do DB nebo odeslání na hostitele třetí strany, jako je Amazon S3.

Viz také:



  1. ECONNREFUSED pro Postgres na nodeJS s dockery

  2. Bezpečnostní přístupy v datovém modelování. Část 4

  3. Časový rozdíl SQL mezi dvěma daty má za následek hh:mm:ss

  4. COUNT() vs COUNT_BIG() na SQL Server:Jaký je rozdíl?