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 200505170036.j4H0aJGB000427@internal.waterfind.com.au
Whole thread Raw
Responses Re: Saving currupting binary data into the database when
List pgsql-jdbc

 

Hello,

I’m using hibernate to connect postgresql via java, and I’m trying to save a image as a binary file,

Using the ..

 

When I upload:
..

                        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

 

Regards,

Dilan

pgsql-jdbc by date:

Previous
From: sumit shah
Date:
Subject: Arrays Was (Re: ERROR in 8.0 driver, but not 7.4: SELECT DISTINCT, ORDER BY expressions must appear in select list)
Next
From: Weiping
Date:
Subject: Simplified Chinese translation of po file