製造初心者です。今、現場で、言語:java、db:oracle12cでDB接続はjdbcManagerで
ファイルアップロード、ダウンロード機能を作成しています。
やりたいこと
jspでinputタグのtype=fileで指定したファイルをblob型でDBに登録し、pdf形式で出力時は、ダウンロードバーを表示し、PDFを
出力したいのですが、以下、問題が発生しています。
①セキュリティの問題で、ファイルのフルパスを取得することができません。
フルパスを取得する方法、または、ほかにいい方法はありませんでしょうか。
②blobデータを取得し、pdf出力を行いたいのですが、以下、処理では、うまく出力しません。
解決方法などご教示いただけないでしょうか。
よろしくお願いいたします。
java
1------DB登録部分------ 2File file = new File("");//①ファイルのフルパスが取得できない。 3FileInputStream is = new FileInputStream(file); 4ByteArrayOutputStream baos = new ByteArrayOutputStream(); 5BufferedOutputStream os = new BufferedOutputStream(baos); 6int c; 7try{ 8 while((c = is.read()) != -1){ 9 os.write(c); 10 } 11 }finally { 12 if (os != null) { 13 os.flush(); 14 is.close(); 15 } 16 } 17//エンティティクラスにセット 18useConMst.conFile = baos.toByteArray(); 19 20//jdbcmanagerでDBにアクセス(登録)を行う。 21int relt = jdbcManager.insert().execute(); 22 23------PDFファイルダウンロード部分------ 24//Blobデータを取得 25List<UseConMst> results = jdbcManager.selectBySql( 26 UseConMst.class, sel.toString()).getResultList(); 27 28 29if(results == null && results.seze() <= 0){ 30//エラー時内容省略 31} 32 33InputStream in = null; 34ByteArrayOutputStream out = null; 35OutputStream outStram = null; 36BufferedOutputStream os = null; 37 38try{ 39 in = new ByteArrayInputStream(results.get(0).conFile); 40 out = new ByteArrayOutputStream (); 41 os = new BufferedOutputStream (out); 42 int cnt; 43 While((cnt = in.read()) != -1){ 44 os.write(cnt); 45 } 46 outStram = response.getOutputStream(); 47 outStram.write(out.toByteArray()); 48 49 String pdfFile = "pdffile.pdf"; 50 51 PesponseUtil.download( pdfFile ,out.toByteArray()); 52 53‥‥‥‥