<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ā)
    最近關(guān)心的內(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)站總是不可避免的要和用戶進(jìn)行信息的交互,倘若是從窗體傳送一般的簡單輸入類型(例如:text、password、radio、 checkbox、select等等)的信息到服務(wù)器端時,只要使用application/x-www-form-urlencoded的編碼方式用 session傳遞就可以了。但是當(dāng)涉及到和用戶之間的文件交換(包括上傳和下載)時,就不是那么簡單了。在上傳文件到服務(wù)器時,必須要使用 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類主要負(fù)責(zé)文件上傳的處理。MultipartRequest有8個構(gòu)造函數(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種構(gòu)造函數(shù)都是用來專門處理HTTP協(xié)議的,saveDirectory是上傳文件要存儲在服務(wù)器端的目錄名稱;maxPostSize是用來 限制用戶上傳文件大小的,若超過maxPostSzie,會產(chǎn)生IOException,默認(rèn)上傳文件大小是1MB;encoding可以設(shè)定用何種編碼 方式來上傳文件名稱,可以解決中文問題。

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

    Public Enumeration getParameterNames()

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

    public String getParameter(String name)

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

    public String[] getParameterValues(String name)

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

    public Enumeration getFileName()

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

    public String getFilesystemNames(String name)

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

    public String getContentType(String name)

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

    public File getFile(String name)

    此方法得到一個文件對象,代表儲存在服務(wù)器上的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文件就可以實習(xí)文件的上傳下載功能。

    圖2 jspsmartUpoad

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

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

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

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

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

    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()得到文件的擴(kuò)展名

    ………….

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

    4 Jakarta Apache Struts upload

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

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

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

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

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

    5 幾種方法的比較

    O`Rrilly-Cos

    jspsmartUpload

    Struts-upload

    是否開源

    是否免費

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

    不明

    功能

    一般

    可靠性

    一般

    特點綜述

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

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

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

    表1 幾種上傳方法的比較

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

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

    posted on 2006-05-16 23:50 Alex 閱讀(1549) 評論(0)  編輯  收藏 所屬分類: javaweb技術(shù)
    主站蜘蛛池模板: 久久国产亚洲观看| 精品亚洲综合在线第一区| 亚洲第一区视频在线观看| 青青草原1769久久免费播放| 久久久久亚洲精品天堂久久久久久| 亚洲国产av玩弄放荡人妇| 毛片a级毛片免费播放100| 亚洲色偷偷色噜噜狠狠99| 免费看少妇作爱视频| 亚洲aⅴ无码专区在线观看春色| 永久在线毛片免费观看| 日本中文字幕免费看| 国产午夜亚洲不卡| 午夜视频在线免费观看| 亚洲欧洲日产v特级毛片| 最近2019中文字幕免费看最新| 欧美日韩亚洲精品| 久久影院亚洲一区| 午夜精品射精入后重之免费观看 | 国产精品无码永久免费888 | 亚洲精品国产高清不卡在线| 久久国产一片免费观看| 亚洲福利在线视频| 久久精品女人天堂AV免费观看| 国产亚洲美女精品久久久久| 国产午夜亚洲精品午夜鲁丝片 | 最新久久免费视频| 亚洲视频国产视频| 青草草在线视频永久免费| 九九九精品视频免费| 亚洲精品视频在线| 午夜电影免费观看| a级毛片免费高清毛片视频| 亚洲国产精品综合久久久| mm1313亚洲精品无码又大又粗| 日韩电影免费在线观看| 亚洲欧洲AV无码专区| 亚洲国产精品高清久久久| 女人被免费视频网站| 日韩av无码免费播放| 亚洲一区二区三区成人网站|