Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zapisać i pobrać obraz na moim serwerze w aplikacji internetowej java

zamiast zapisywać go na dysku C, mam zamiar uruchomić go na serwerze, ale gdzie powinienem przechowywać obraz, aby później pobrać i wyświetlić w pliku xhtml?

To zależy od tego, ile masz kontroli nad konfiguracją serwera. Idealnym rozwiązaniem byłoby skonfigurowanie stałej ścieżki poza folderem aplikacji internetowych Tomcat. Na przykład /var/webapp/upload . Możesz ustawić tę ścieżkę jako argument maszyny wirtualnej lub zmienną środowiskową, aby aplikacja internetowa mogła ją pobrać programowo bez konieczności zmiany kodu.

Na przykład podczas określania jako argument maszyny wirtualnej -Dupload.location=/var/webapp/upload , możesz dokończyć przesyłanie w następujący sposób:

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.

Jeśli chodzi o obsługę pliku z powrotem, najbardziej idealnym rozwiązaniem byłoby dodanie lokalizacji przesyłania jako oddzielnego <Context> do Tomcata. Np.

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

W ten sposób możesz uzyskać do niego bezpośredni dostęp przez http://example.com/uploads/foo-123456 .ex

Jeśli nie masz żadnej kontroli nad konfiguracją serwera, najlepszym rozwiązaniem jest przechowywanie w bazie danych lub wysyłanie do hosta innej firmy, takiego jak Amazon S3.

Zobacz też:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zabezpieczyć MySQL:część pierwsza

  2. Uwzględnić nagłówki podczas korzystania z funkcji SELECT INTO OUTFILE?

  3. Wydajność MYSQL OR vs IN

  4. Jak ponownie zsynchronizować bazę danych Mysql, jeśli Master i Slave mają inną bazę danych w przypadku replikacji Mysql?

  5. PDO::__construct():Serwer wysłał zestaw znaków (255) nieznany klientowi. Proszę zgłosić się do programistów