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

Hvordan jeg gemmer og henter et billede på min server i en java webapp

i stedet for at skrive det til mit C-drev, vil jeg køre det på serveren, men hvor skal jeg gemme billedet for senere at hente det og vise det i en xhtml-fil?

Det afhænger af, hvor meget kontrol du har over konfigurationen af ​​serveren. Ideelt ville være at konfigurere en fast sti uden for Tomcat webapps-mappen. For eksempel /var/webapp/upload . Du kan indstille denne sti som et VM-argument eller miljøvariabel, så din webapp kan hente den programmatisk uden at skulle ændre koden.

For eksempel, når du angiver som VM-argument -Dupload.location=/var/webapp/upload , kan du fuldføre uploaden som følger:

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.

Hvad angår visning af filen tilbage, ville det mest ideelle være at tilføje upload-placeringen som en separat <Context> til Tomcat. F.eks.

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

På denne måde kan du få direkte adgang til det ved at http://example.com/uploads/foo-123456 .ext

Hvis du ikke har kontrol over konfigurationen af ​​serveren, så er det bedst at gemme i DB'en eller sende til en tredjepartsvært som Amazon S3.

Se også:



  1. MySQL-ændringssamling af alle tabeller

  2. LOCALTIMESTAMP() Funktion i Oracle

  3. Indsættelse af SQL Server-data i Salesforce.com

  4. Brug af data beskyttet med en Azure Key Vault fra Linux