イメージを PostgreSQL データベースにアップロードできる JSP Web アプリを作成しようとしています。これを目安に進めていたのですが、DBに画像がアップロードされず、メソッド(下記)がcatchに入ります。
これまでの私のコードは次のとおりです。
public boolean upIm() {
try {
File file = new File("bg.jpg");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = con.prepareStatement("INSERT INTO images VALUES (?, ?)");
ps.setString(1, "background");
ps.setBinaryStream(2, fis, (int) file.length());
ps.executeUpdate();
ps.close();
fis.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
FileInputStream に問題があるようです。これは、db に送信されるステートメントが INSERT INTO images VALUES ('background', ?)
であり、file.length() をテストしたところ正常に動作するためです。
それでおしまい; さらに詳しい情報やコードが必要な場合は、お知らせください。
編集:私はこのスタックトレースを取得します:
org.postgresql.util.PSQLException: ERROR: relation "images" does not exist
Position: 13
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
at bd.provaImg.upIm(provaImg.java:50)
at bd.prova2.main(prova2.java:14)
位置 13 は、このメソッドがあるクラスを単純にインスタンス化するクラス (ここには表示されていません) の行だと思います。