<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發(fā)
    最近關心的內(nèi)容:SSH,seam,flex,敏捷,TDD
    本站的官方站點是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks

    key words: jsp文件上傳 上傳組件 Rrilly-Cos? jspsmartUpload? Jakarta Apache Struts upload


    幾種上傳方法介紹、比較

    目 錄

    1 引言... 1

    2 O`Rrilly-Cos. 1

    3 jspsmartUpload. 3

    4 Jakarta Apache Struts upload. 5

    5 幾種方法的比較... 6

    1 引言

    一個網(wǎng)站總是不可避免的要和用戶進行信息的交互,倘若是從窗體傳送一般的簡單輸入類型(例如:text、password、radio、 checkbox、select等等)的信息到服務器端時,只要使用application/x-www-form-urlencoded的編碼方式用 session傳遞就可以了。但是當涉及到和用戶之間的文件交換(包括上傳和下載)時,就不是那么簡單了。在上傳文件到服務器時,必須要使用 multipart/form-data的編碼方式,并且不能直接使用request.getParameter()來取得。至于所使用的方法有很多種, 比如:jspsmart公司的jspsmartupload組件,O`Rrilly公司的cos組件,Jakarta Apache公司的commonsFileUpload組件,JavaZoom的uploadbean組件,還有Struts組件中自帶的 org.apache.struts.upload類工具等等。下面就針對其中的三種解決方案(jspsmartupload、O`Reilly- cos、struts.upload)做一個簡單的介紹和對比。

    2 O`Rrilly-Cos

    Cos組件是O`Rrilly公司開發(fā)的,該組件免費,不定期增加新功能,開源。

    圖1 O`Rrilly-Cos

    在Cos組件中,MultipartRequest類主要負責文件上傳的處理。MultipartRequest有8個構造函數(shù):

    1.Public MultipartRequest ( HttpServletRequest request, String saveDirectory,) throws IOException

    2.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException

    3.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, FileRenamePolicy policy) throws IOException

    4.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding) throws IOException

    5.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding, FileRenamePolicy policy) throws IOException

    6.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, String encoding) throws IOException

    7.Public MultipartRequest ( HttpServletRequest request, String saveDirectory) throws IOException

    8.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException

    前6種構造函數(shù)都是用來專門處理HTTP協(xié)議的,saveDirectory是上傳文件要存儲在服務器端的目錄名稱;maxPostSize是用來 限制用戶上傳文件大小的,若超過maxPostSzie,會產(chǎn)生IOException,默認上傳文件大小是1MB;encoding可以設定用何種編碼 方式來上傳文件名稱,可以解決中文問題。

    MultipartRequest類工具有8種方法,利用這些方法,我們可以取得請求的相關信息:

    Public Enumeration getParameterNames()

    可以取得請求參數(shù)的名稱

    public String getParameter(String name)

    此方法傳回參數(shù)為name的值

    public String[] getParameterValues(String name)

    此方法主要用在取得當一指定參數(shù)具有多個值時,它會傳回String的數(shù)組

    public Enumeration getFileName()

    傳回所有文件輸入類型的名稱

    public String getFilesystemNames(String name)

    用此方法得到上傳文件的真正的文件名,這里的name指文件輸入類型的名稱

    public String getContentType(String name)

    此方法得到上傳文件的內(nèi)容類型

    public File getFile(String name)

    此方法得到一個文件對象,代表儲存在服務器上的name文件

    public String getOriginalFileName(String name)

    返回文件在修改政策有效之前的文件名

    3 jspsmartUpload

    Jspsmartupload組件是由jspsmart公司開發(fā)的,安裝好它的組件以后,就可以處理文件上傳及下載的問題。該組件簡單好用,免費,但是源碼不公開。

    Jspsmartupload Overview:

    Free 免費的

    upload 1or more files to the server 可上傳1個或多個文件

    upload to a database 上傳文件到數(shù)據(jù)庫

    control the upload file by file 可以一列一列的(一個個)控制上傳

    manage mixed forms files +form fields 可以管理表格文件和表格域

    download a file 可以實現(xiàn)文件下載

    download a database field 可以從數(shù)據(jù)庫中下載

    restrict file size , extension etc 可以限制上傳文件的尺寸和類型

    MacBinary support MckBinary的支持

    Platform: Apache, NT, Unix, Linux, IIS 可以在多種平臺上運行

    Database : MySQL , Oracle…… 支持多種數(shù)據(jù)庫(最支持MySQL)

    整個jspsmartupload壓縮包113K,包括有范例、API說明和編譯好的class文件,調(diào)用這些class文件就可以實習文件的上傳下載功能。

    圖2 jspsmartUpoad

    Jspsmartupload能實現(xiàn)比O`Rrilly-Cos更多的方法,比如有:

    1.public int getSize()方法得到上傳文件大小的總和

    2.public void setDeniedFilesList(String deniedFilesList)方法設定用戶不可上傳的類型

    3.public void setAllowedFilesList(String allowedFilesList)方法設定用戶可上傳的文件類型

    4.public void setTotalMaxFileSize(Long totalMaxFilesList)設定一次上傳文件大小總和

    5.public int getCount()得到Files中的文件個數(shù)

    6.public Boolean isMissing()測試文件是否確實已經(jīng)存在

    7.public String getFieldName()得到此File在前一個HTML文件中的表格名稱

    8.public String getFilePathName()得到此File在上傳端的文件位置

    9.public String getFileExt()得到文件的擴展名

    ………….

    Jspsmartupload的安裝:只需把這些class文件拷貝到classes文件夾中即可。

    4 Jakarta Apache Struts upload

    由于本項目是用Struts結(jié)構開發(fā)的,所以利用Struts自帶的類工具實現(xiàn)上傳,這能和工程整體結(jié)合的很好,不需要導入其他的包,并且功能強大,使用簡單,性能穩(wěn)定且開源,所以無疑是最佳的選擇。

    下圖是Struts中upload包的結(jié)構。基本上要實現(xiàn)上傳功能,只要用到FormFiles和MultipartRequestHandler接口就可以解決了。

    圖3 Struts-upload包的結(jié)構

    基本處理流程是,從頁面中傳遞文件到Form中,然后從Action得到Form中的文件,形成InputStream,然后通過OutputStream寫入磁盤。

    同樣,Struts的upload工具類也可以實現(xiàn)對上傳文件大小和類型的控制,可以同時上傳多個文件等等。

    5 幾種方法的比較

    O`Rrilly-Cos

    jspsmartUpload

    Struts-upload

    是否開源

    是否免費

    是否繼續(xù)開發(fā)

    不明

    功能

    一般

    可靠性

    一般

    特點綜述

    免費,開源,不定期增加新功能,可靠性高,代碼直接寫在jsp文件中

    簡單好用,可上傳、下載,功能強大,免費,但是源碼不公開,代碼直接寫在jsp文件中。上傳時,文件先預讀入內(nèi)存,當接到save指令時才保存到磁盤,所以上傳的性能和文件及內(nèi)存的大小關系密切。

    在Struts中使用極為方便,免費,開源,可靠性高,表示層和業(yè)務層分離,有后臺的Form和Action

    表1 幾種上傳方法的比較

    在研究比較這幾種上傳組件之后,我認為不管用其中的哪一種都能滿足我們的要求,畢竟我們要實現(xiàn)的僅僅是文件上傳的功能。最基本的,只要能將文件取得File格式的,就能實現(xiàn)各種各樣的功能。

    結(jié)論是,就本項目而言,使用Struts-upload組件是最貼切的選擇;如果要做封裝的話,最好選擇jspsmartUpload和O`Rrilly-Cos。

    posted on 2006-05-16 23:50 Alex 閱讀(1554) 評論(0)  編輯  收藏 所屬分類: javaweb技術
    主站蜘蛛池模板: 九九视频高清视频免费观看 | 久久久久亚洲av无码尤物| 久久久青草青青国产亚洲免观 | 国产精品自在自线免费观看| 国产精品V亚洲精品V日韩精品| 亚洲一区二区中文| 99亚洲男女激情在线观看| 男人天堂免费视频| 在线观着免费观看国产黄| 亚洲国产精品久久久久| 国产成人综合久久精品亚洲| 久久国产色AV免费观看| 国产三级免费电影| 亚洲三级中文字幕| 久久九九免费高清视频| 成年女人永久免费观看片| 18禁亚洲深夜福利人口| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 亚洲国产精品久久久天堂| 美女视频黄.免费网址| 成人免费毛片观看| 亚洲精品456在线播放| 最新久久免费视频| 亚洲国产精品久久久久久| 免费不卡视频一卡二卡| 亚洲成人午夜在线| 美女视频黄的全免费视频| 日韩色日韩视频亚洲网站| 亚洲一区二区女搞男| 国产精品综合专区中文字幕免费播放| 成年性午夜免费视频网站不卡| 亚洲AV日韩AV无码污污网站| 一个人免费观看视频www| 亚洲性无码av在线| 18女人腿打开无遮掩免费| 亚洲AV无码专区亚洲AV伊甸园 | 色噜噜综合亚洲av中文无码| 黄页网站在线观看免费高清| 男女猛烈xx00免费视频试看| 亚洲成年轻人电影网站www | 桃子视频在线观看高清免费视频|