SSH(Struts2)圖片上傳,oracle與mysql區別

來源:互聯網
上載者:User

       如題, 在吃了NN多的虧以後,決心寫下本文,小總結片上傳的經驗,可能類型不太正確,相信大家都懂的,寫一下思路而已。

 

      以前用Struts1.X做過圖片上傳,用的是FormFile封裝頁面傳過來的檔案參數,而且Struts2.X用的是File類型 的,還可以封裝檔案名稱fileName和fileContentType檔案類型(好像不是這個屬性,跟這個差不多的),在Action裡面封裝好資料就行了,然後在Dao層處理一下,這裡有一點區別:

    (假設資料庫欄位名為:PHOTO,  POJO對象的屬性名稱為:photo,Action封裝檔案的屬性名稱為:photoFile)

   1:Oracle資料庫:

 

        POJO對象的屬性設定 成Blob類型,然後利用

FileinputStream fileinputstream=new FileinputStream(photoFile);

Hibernate.createBlob(fileinputStream);

這個方法返回一個Blob類型的資料, 在hibernate的對應檔裡面<property name="photo" column="PHOTO" />就行了,如果有問題,就再加上類型type 屬性,然後調用 getHibernateTemplate().save()就行了。

 

 

2.mySql資料庫:

 

      需要修改一下的是POJO的屬性了,這裡不用Blob類型了,改用byte[] 這種類型,

 

      byte[] fileBytes=null;

FileinputStream fileinputstream=new FileinputStream(photoFile);

     fileBytes=new byte[fileinputstream.avaliable()];

  fileinputstream.read(filebytes);

    fileinputstream.close();

 

採用二進位儲存圖片,然後hibernate對應檔修改成

<property name="photo" column="PHOTO"  type="binary" /> 這個,然後再調用 getHibernateTemplate.save()方法就行了。除些以外的,不用作修改 與oracle一樣。(至少我的是這樣的,成功 了)。

 

 

注意:Struts對於檔案上傳有大小限制 ,預設好像最大是2M多一點點(可以更改struts的配置),而mysql也是如此的,如果是大檔案 的話,一個方面不建議直接儲存在資料庫,另一方面,必須要先修改一下mysql的設定檔 my.ini,添加一個max_allowed_packet(貌似是這樣,自己google一下),設定一下允許 的最大值 ,才能上傳。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.