PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menyimpan file pdf di database postgresql menggunakan servlet?

Tidak jelas API ketekunan apa yang Anda gunakan. JDBC? JPA? Hibernasi yang bagus? Saya akan menganggap JDBC. Di JDBC, Anda dapat menggunakan PreparedStatement#setBinaryStream() untuk menyimpan InputStream dalam database, atau PreparedStatement#setBytes() untuk menyimpan byte[] dalam database. Bagaimanapun, di PostgreSQL Anda memerlukan bytea kolom untuk ini.

Saat Anda memverifikasi file yang diunggah dengan PdfReader pertama, InputStream tidak cocok. Yaitu hanya bisa dibaca sekali. Klien tidak akan mengirim ulang file beberapa kali setiap kali Anda perlu membaca InputStream lagi. Anda perlu menyalin InputStream ke byte[] pertama.

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

(IOUtils adalah bagian dari Apache Commons IO; jika Anda menggunakan FileUpload, maka Anda sudah memilikinya)

Jangan lupa untuk mengubah iText menggunakan byte[] sebagai gantinya:

PdfReader localPdfReader = new PdfReader(filecontent);

Setelah Anda memvalidasinya dengan iText, Anda dapat menyimpannya dalam bytea PostgreSQL kolom menggunakan JDBC sebagai berikut:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih nama kolom dan nilai dari tabel

  2. Cara menghapus duplikat, yang dihasilkan dengan fungsi array_agg postgres

  3. SQL mengeluarkan data dari BEGIN; ...; AKHIR; blokir dengan python

  4. Nama kolom dan tipe data untuk tampilan terwujud di PostgreSQL?

  5. Bagaimana mengubah perilaku penyortiran nol default dari PostgreSQL di Django ORM