sql >> Databáze >  >> RDS >> PostgreSQL

Jak uložit soubor pdf do databáze postgresql pomocí servletů?

Není jasné, jaké persistentní API používáte. JDBC? JPA? Dobrý hibernace? Předpokládám JDBC. V JDBC můžete použít PreparedStatement#setBinaryStream() pro uložení InputStream v databázi nebo PreparedStatement#setBytes() pro uložení byte[] v databázi. Ať tak či onak, v PostgreSQL potřebujete bytea sloupec pro toto.

Při ověřování nahraného souboru pomocí PdfReader nejprve InputStream je nevhodný. Lze jej totiž přečíst pouze jednou. Klient nebude soubor opakovaně odesílat pokaždé, když si potřebujete přečíst InputStream znovu. Musíte zkopírovat InputStream na byte[] První.

ByteArrayOutputStream output = new ByteArrayOutputStream();
IOUtils.copy(localFileItem.getInputStream(), output);
byte[] filecontent = output.toByteArray();

(IOUtils je součástí Apache Commons IO; pokud používáte FileUpload, pak jej již máte)

Nezapomeňte změnit iText tak, aby používal byte[] místo toho:

PdfReader localPdfReader = new PdfReader(filecontent);

Po ověření pomocí iText jej můžete uložit do bytea PostgreSQL pomocí JDBC takto:

statement = connection.prepareStatement("INSERT INTO files (name, content) VALUES (?, ?)");
statement.setString(1, filename);
statement.setBytes(2, filecontent);
statement.executeUpdate();



  1. android JDBC mysql java konektor app:preDexDebug

  2. Získejte datum začátku týdne a datum konce týdne z čísla týdne

  3. Jak sčítat s podmínkami na jiných sloupcích

  4. Jak převést sekundu na čas pomocí MYSQL