新聞中心
本篇文章給大家分享的是有關struts2文件上傳采用的三種方式分別是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在白山等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設計 網(wǎng)站設計制作按需搭建網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,營銷型網(wǎng)站,外貿營銷網(wǎng)站建設,白山網(wǎng)站建設費用合理。
文件上傳幾乎是每個項目實現(xiàn)的一個必須的模塊。
上傳就是將信息從個人計算機(本地計算機)傳遞到中央計算機(遠程計算機)系統(tǒng)上,讓網(wǎng)絡上的人都能看到。將制作好的網(wǎng)頁、文字、圖片等發(fā)布到互聯(lián)網(wǎng)上去,以便讓其他人瀏覽、欣賞。這一過程稱為上傳。
JAVA實現(xiàn)文件上傳的幾個組件:
1 SmartUpload 用的最多的一個組件,已經(jīng)不再更新了,可以實現(xiàn)上傳和下載
2 FileUpload Apache實現(xiàn)的文件上傳組件,功能齊備
3 J2KUpload java2000實現(xiàn)的文件上傳組件,全部使用內存,適合多個不超過10M的小文件
下面具體說說FileUpload Apache實現(xiàn)的文件上傳組件。
1、/** 按copy方式上傳 */
Java代碼
public String uploadFile(){ /**保存的具體路徑*/ String savepath = getSavePath(); /**根據(jù)保存的路徑創(chuàng)建file對象*/ File file = new File(savepath); if(!file.exists()){ /**創(chuàng)建此文件對象路徑*/ file.mkdirs(); } try { /**使用的是:org.apache.commons.io.FileUtils FileUtils*/ FileUtils.copyFile(pic, new File(file,getPicFileName())); } catch (IOException e) { e.printStackTrace(); } return SUCCESS; }
備注:
1、getSavePath()方法中,ServletActionContext().getServletContext().getRealPath
(savePath+"\\"+getPicFileName()); ,這個主要是一個文件的實際路徑
2、我個人認為這種方式是簡單易用的。按copy方式上傳使用的是Apache公司的
org.apache.commons.io.FileUtils包里的FileUtils.java。
2、/** 按字節(jié)方式上傳 */
Java代碼
public String uploadFile(){ /** 文件的寫操作 */ FileInputStream fis = null; FileOutputStream fos = null; /** 保存的路徑 */ String savepath = getSavePath(); /** 根據(jù)保存的路徑創(chuàng)建file對象 */ File file = new File(savepath); /** file對象是否存在 */ if (!file.exists()) { /** 創(chuàng)建此文件對象路徑 */ file.mkdirs(); } try { /** 創(chuàng)建輸入流 */ fis = new FileInputStream(pic); /** 輸出流 更據(jù)文件的路徑+文件名稱創(chuàng)建文件對象 */ fos = new FileOutputStream(file + "http://" + getPicFileName()); /** 讀取字節(jié) */ byte b[] = new byte[1024]; int n = 0; /** 讀取操作 */ while ((n = fis.read(b)) != -1) { /** 寫操作 */ fos.write(b, 0, n); } /** 關閉操作 */ if (fis != null) { fis.close(); } if (fos != null) { fos.close(); } } catch (Exception e) { e.printStackTrace(); } return SUCCESS; }
3、/** 按字符方式上傳 即“三層管道” */
Java代碼
public String uploadFile(){ /** 文件的寫操作 */ BufferedReader br =null; BufferedWriter bw = null; /** 保存的路徑 */ String savepath = getSavePath(); /** 根據(jù)保存的路徑創(chuàng)建file對象 */ File file = new File(savepath); /** file對象是否存在 */ if (!file.exists()) { /** 創(chuàng)建此文件對象路徑 */ file.mkdirs(); } try { /** 創(chuàng)建一個BufferedReader 對象*/ br = new BufferedReader(new InputStreamReader(new FileInputStream (pic))); bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream (file + "http://" + getPicFileName()))); // 讀取字節(jié) char b[] = new char[1024]; int n = 0; // 讀取操作 while ((n = br.read(b)) != -1) { // 寫操作 bw.write(b, 0, n); } // 關閉操作 if (br != null) { br.close(); } if (bw != null) { bw.close(); } } catch (Exception e) { e.printStackTrace(); } return SUCCESS; }
備注:
第二種上傳方式?jīng)]有第三種上傳方式效率高。
建議:
首先用第一種方式上傳,次之使用第三種方式上傳,最后再使用第二種方式上傳。
以上就是struts2文件上傳采用的三種方式分別是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:struts2文件上傳采用的三種方式分別是什么
本文來源:http://www.ef60e0e.cn/article/gjgpje.html