sql >> Database >  >> RDS >> Mysql

Hoe ik een afbeelding op mijn server opsla en ophaal in een java-webapp

in plaats van het naar mijn C-schijf te schrijven, ga ik het op de server uitvoeren, maar waar moet ik de afbeelding opslaan om later op te halen en weer te geven in een xhtml-bestand?

Dat hangt af van hoeveel controle je hebt over het configureren van de server. Ideaal zou zijn om een ​​vast pad buiten de Tomcat-webapps-map te configureren. Bijvoorbeeld /var/webapp/upload . U kunt dit pad instellen als een VM-argument of omgevingsvariabele, zodat uw webapp het programmatisch kan ophalen zonder dat u de code hoeft te wijzigen.

Als u bijvoorbeeld als VM-argument -Dupload.location=/var/webapp/upload opgeeft , kunt u de upload als volgt voltooien:

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.

Wat betreft het terugsturen van het bestand, zou het meest ideaal zijn om de uploadlocatie toe te voegen als een aparte <Context> naar Tomcat. Bijv.

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

Op deze manier heb je er rechtstreeks toegang toe via http://example.com/uploads/foo-123456 .ext

Als je geen controle hebt over het configureren van de server, dan is opslaan in de DB of verzenden naar een externe host zoals Amazon S3 de beste keuze.

Zie ook:



  1. Evalueren wanneer een expressie in een query wordt geëvalueerd

  2. Sp_help_jobschedule gebruiken in SQL Server

  3. 10 redenen waarom uw bedrijf Microsoft Access nodig heeft

  4. Toptrends in databasebeheer