Re: Saving currupting binary data into the database when saving a image into the database - Mailing list pgsql-jdbc

From Dilan
Subject Re: Saving currupting binary data into the database when saving a image into the database
Date
Msg-id 200505180102.j4I12mGB006271@internal.waterfind.com.au
Whole thread Raw
In response to Re: Saving currupting binary data into the database when  (Kris Jurka <books@ejurka.com>)
List pgsql-jdbc
Hello,

I'm using psql 7.3.4-RH,

I'm using hibernate to connect postgresql via java, and I'm trying to save a
image as a binary file, I hope hibernate not corrupting the data connection,
but so far I cant find any article regards that issue, hope the question is
much clear to you now..


When I upload, use this part of the class:


UploadTransferForm uForm = (UploadTransferForm) form;
int size=uForm.getFileUpload().getFileSize();
byte[] byteArr = new byte[size];

ActionErrors errors = new ActionErrors();

try {
    //Create an input stream to read the uploaded file.
    ByteArrayInputStream bytein = new
ByteArrayInputStream(uForm.getFileUpload().getFileData());
    // Load the input stream into the byte Array.
    bytein.read(byteArr);
    // Close the input stream.
    bytein.close();
    // Load the byte[] into the content field.
    uForm.setContent(byteArr);
} catch (Exception e) {
        logger.error("Error adding image to the database", e);
}

Session sess = null;

AuthorityApprovalForms af = new AuthorityApprovalForms();

try {
        sess = Waterfind.getSessionFactory().openSession();
} catch (net.sf.hibernate.HibernateException e) {
        logger.error("Error opening hibernate session", e);
}
   try {
        af.setImg(byteArr);
        sess.save(af);
        sess.flush();

} catch (Exception e) {

--

when i diplaying it



try {

    AuthorityApprovalForms af = new AuthorityApprovalForms();
    Long formId = new Long(request.getParameter("formId"));
    af = AuthorityApprovalForms.getFormById(formId);

    byte pic[] = af.getImg();

    OutputStream out = response.getOutputStream();
    out.write( pic );

     } catch (IOException e) {
             logger.error("Error opening file region", e);
     }
}


I have save the data into the database via hibernate-mapping as binary



<hibernate-mapping>

    <class name="com.admin.AuthorityApprovalForms"
table="AUTHORITY_APPROVAL_FORMS">
        <id name="id" type="long">
            <generator class="native"/>
        </id>
    <many-to-one name="OfferId" class="com.admin.core.Offer">
            <column name="offer_id"/>
        </many-to-one>
    <property name="name" type="string"/>
    <property name="type" type="string"/>
    <property name="img" type="binary"/>

    </class>
</hibernate-mapping>

However, when jpg is displaying, it appear to be corrupted, with green and
black back ground (similar to missing layers).

I think, when saving the binary data to the database, it try to convert
binary data to different format, is there is a way to fix this or any other
reason behind it?



Can some one please help




pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Re: Saving currupting binary data into the database when
Next
From: laser
Date:
Subject: Re: Simplified Chinese translation of po file