Re: Storing a dynamically created PDF file in a blob field
From: Murray (parps_at_SMAFFoffSPAMMER.optusnet.SPAMMAGE.com.au)
Date: 08/02/04
- Previous message: Tony: "Storing a dynamically created PDF file in a blob field"
- In reply to: Tony: "Storing a dynamically created PDF file in a blob field"
- Next in thread: Tony: "Re: Storing a dynamically created PDF file in a blob field"
- Reply: Tony: "Re: Storing a dynamically created PDF file in a blob field"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 01 Aug 2004 23:24:33 GMT
"Tony" <bones@sprintmail.com> wrote in message
news:AuePc.22428$iK.11358@newsread2.news.atl.earthlink.net...
> Hi,
> I have dynamically created a PDF document in memory as a FileOutputStream
> Now I have to get it into a DB2 table, storing it as a BLOB. The table has
a
> document id,
> document name, some date fields and this BLOB column that stores PDF
Files.
> Until now, the PDF files were read off of a disk drive. The code used was:
>
> byte[] fileAsBytes = (byte[]) adminDocEvent.getFile();
>
> which returns an object.
> then:
> "INSERT INTO WPWDB.DOC_DOCUMENT ("
> + "DOC_SUB_CAT_ID,"
> + "DOC_DOC_NM_TXT,"
> + "DOC_DOC_DESCN_TXT,"
> + "DOC_ACTIVE_TXT,"
> + "DOC_DOC_LNK_TXT,"
> + "DOC_DOC_MIME_TYP,"
> + "MODIFY_USUS_ID,"
> + "MODIFY_DT_TM)"
> + " VALUES (?,?,?,?,?,?,?,CURRENT TIMESTAMP)";
>
> connection = getConnection();
>
> pstmt = connection.prepareStatement(query);
> pstmt.setInt(1, subCatId);
> pstmt.setString(2, docName);
> pstmt.setString(3, docDescription);
> pstmt.setString(4, "Y");
> ==> pstmt.setBytes(5, fileasarray);
> pstmt.setString(6, mimeType);
> pstmt.setString(7, modfiedUserID);
> pstmt.executeUpdate();
>
> This is fine, if the pdf file exists as a file on a disk.
> For my issue (loading a pdf file from memory) I use the following:
>
> FileOutputStream fos = new FileOutputStream(docName);
> private PdfWriter docWriter = null;
> docWriter=PdfWriter.getInstance(pdfDocument, fos);
> I then create the pdfDocument in memory using iText classes.
> Then I try to prepare the file for the above sql stmt.
>
> file = (Object) fos;
> AdminDocDAO adminDocDAO = new AdminDocDAO();
> if (adminDocDAO.addDoc(subCatId,docName,docDescription,fileAsBytes,
> mimeType,modifiedUserID))
>
> I get a casting exeception at: file = (Object) fos;
>
> So my question is can anyone think of another approach to getting a
> FileOutputStream into a format loadable in SQL using DB2???????
> Thanks to any and all who can.
How about not even using a FileOutputStream? You're not writing to the
filesystem any more, so you shouldn't be using anything File-related.
There's two option I can think of:
- You can either write directly to the Blob's OutputStream
(Blob#setBinaryStream). This probably depends on the design of your code,
since anything blob-related needs to be done inside a transaction where a db
connection is already established (if I remember correctly?)
- Use a ByteArrayOutputStream and at the end of the PDF creation, get
the byte[] from it - ByteArrayOutputStream#toByteArray()
- Previous message: Tony: "Storing a dynamically created PDF file in a blob field"
- In reply to: Tony: "Storing a dynamically created PDF file in a blob field"
- Next in thread: Tony: "Re: Storing a dynamically created PDF file in a blob field"
- Reply: Tony: "Re: Storing a dynamically created PDF file in a blob field"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|