程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Smartupload和commons-fileupload介紹與比較

Smartupload和commons-fileupload介紹與比較

編輯:關於JAVA

WEB文件上傳可能是網站建設中最常用的功能之一,我在項目開發中幾乎都需要實現文件上傳功能.前段時間自己搜集了一些上傳組件.這篇文章中將介紹這些組件的使用方法,並且比較各自的優劣.

一,smartupload組件.

我想只要做個文件上傳的朋友都知道這個組件,我認識的人中使用最多的也是它!我剛到公司的時候,公司也使用的smartupload,這個組件上傳相對較小的文件時是個不錯的選擇.下面給出個使用的例子:

  <%@ page contentType="text/Html;charset=gb2312"%><%@ page import="Java.sql.*"%><%@ page import="com.JSPsmart.upload.*" %>

<% //實例化上載bean SmartUpload mySmartUpload=new SmartUpload(); //初始化 mySmartUpload.initialize(pageContext); //設置上載的最大值,注意:如果這裡設置過大會出現問題! mySmartUpload.setMaxFileSize(500 * 1024*1024); //上載文件 mySmartUpload.upload(); //循環取得所有上載的文件 for (int i=0;i

但是使用smartupload上傳過大文件,或者多文件的時候可能出現CPU或內存占用過高的問題.並且:只有重新啟動容器才能恢復正常!這正是我最後我放棄了使用smartupload的原因.

二,commons-fileupload組件

這個組件是我現在使用的組件,下載地址:http://jakarta.apache.org/site/downloads/downloads_commons-fileupload.CGI,包內包含了API文檔.

使用該組件的例子:

<%@ page language=“java”contentType=“text/Html;charset=GBK”%><%@ page import=“Java.util.*”%><%@ page import=“org.apache.commons.fileupload.*”%><% DiskFileUpload fu = new DiskFileUpload(); // 設置允許用戶上傳文件大小,單位:字節 fu.setSizeMax(10000000); // 設置最多只允許在內存中存儲的數據,單位:字節 fu.setSizeThreshold(4096); // 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬盤的目錄 fu.setRepositoryPath(“D:\\Tomcat5\\TEMP”); //開始讀取上傳信息 List fileItems = fu.parseRequest(request); // 依次處理每個上傳的文件 Iterator iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); //忽略其他不是文件域的所有表單信息 if (!item.isFormFIEld()) { String name = item.getName(); item.write(“D:\\UploadTest\\”+ name); }}%>

從上面的程序可以看出,該組件上傳時候可以用了一個地方來存儲臨時文件,呆上傳完成後直接把文件寫過去.這樣就不會占用過多的內存!而且該組件上傳大文件的時候效率也不低哦!

在這兩個的對比選擇中,我選擇了後者,因為我做的項目中經常上傳大於10M的文件,用前者的時候服務器幾乎被整崩潰.

不過,現在我已經不用這兩種組件了,因為http方式傳文件效率始終很低,我們現在使用的是web方式實現的FTP文件上傳,我將在下篇文章中寫我在項目中是如何實現的.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved