日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件上传简介1---上传到指定的目录

發(fā)布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件上传简介1---上传到指定的目录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

preparation

本節(jié)摘要:本節(jié)主要介紹上傳文件到指定目錄。

引入:

文件上傳是開發(fā)中常用的功能,本節(jié)主要介紹用commons-fileupload-1.1.jar包實現(xiàn)基本的文件上傳功能,即上傳文件到指定的目錄中,同時介紹上傳過程中使用到的相關(guān)類及其方法。

下載插件:

準備需要的jar包

* commons-fileupload-1.1.jar 文件上傳jar包(必須導入)?
* commons-io-1.2.jar (必須導入)如果不導入的程序編譯時不會報錯,但是發(fā)布后運行時會報錯?
* log4j-1.2.8.jar 強烈建議導入,但在本類中不是必須的,后面的上傳文件到數(shù)據(jù)庫中的類中會使用?
* classes12.jar 連接oracle數(shù)據(jù)庫的jar包,后面的上傳文件到數(shù)據(jù)庫中時必須導入

開發(fā)環(huán)境:

System:xp??? JDK:1.5(開發(fā)的JDK版本)? Tomcat:5.X? Myeclipse:6.5

注意:編譯的JDK版本用JDK1.4(如果用JDK1.5編譯,會報”Unsupported major.minor version 49.0”錯誤)

項目環(huán)境:

文件上傳目錄介紹:

在D盤根目錄新建一個test文件夾,然后在test文件夾中新建以下兩個文件夾?
* temp:存放超過設置大小的文件(>2M的文件)?
* uploadfile:上傳文件的存放目錄(<=2M的文件)

class&method:

?*DiskFileItemFactory
?* 實現(xiàn)了FileItemFactory接口
?* 主要方法有:
?* public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)
?* setRepository(File repository);設置緩存路徑 也有相應的get方法
?* setSizeThreshold(int sizeThreshold);設置上傳文件內(nèi)存緩沖區(qū)的大小 也有相應的get方法
?*?
?*?ServletFileUpload
?* 從FileUpload繼承,而FileUpload又從FileUploadBase繼承
?* ServletFileUpload(FileItemFactory fileItemFactory);傳入一個fileItemFactory對象,構(gòu)造ServletFileUpload對象
?* List parseRequest(HttpServletRequest request);從request中獲得文件請求列表
?* void setSizeMax(long sizeMax);//設置允許上傳文件大小 也有相應的get方法
?* setHeaderEncoding(String encoding);//設置上傳文件名編碼的格式 也有相應的get方法
?*?
?*?Pattern
?* 正則表達式的編譯表示形式,指定為字符串的正則表達式必須首先被編譯為此類的實例。
?* 然后,可將得到的模式用于創(chuàng)建 Matcher 對象,依照正則表達式,該對象可以與任意字符序列匹配
?* static Pattern compile(String regex);將給定的正則表達式編譯到模式中
?* Matcher matcher(CharSequence input);創(chuàng)建匹配給定輸入與此模式的匹配器,返回此模式的新匹配器
?*?
?*?FileItem
?* 抽象接口,繼承Serializable
?* boolean isFormField();判斷FileItem類對象封裝的數(shù)據(jù)是否屬于一個普通表單字段,
?*????????????????????? 還是屬于一個文件表單字段,如果是普通表單字段則返回true,否則返回false
?* String getName();用于獲得文件上傳字段中的文件名
?* String getFieldName();用于返回表單字段元素的name屬性值
?* long getSize();獲得上傳文件的大小 單位:字節(jié)
?* getContentType();用于獲得上傳文件的類型
?* void write(File paramFile);用于將FileItem對象中保存的主體內(nèi)容保存到某個指定的文件中
?*?
?*?Matcher
?* 通過解釋 Pattern 對 character sequence 執(zhí)行匹配操作的引擎。?
?* 通過調(diào)用模式的 matcher 方法從模式創(chuàng)建匹配器。創(chuàng)建匹配器后,可以使用它執(zhí)行三種不同的匹配操作:
?* matches方法嘗試將整個輸入序列與該模式匹配。?
?* lookingAt 嘗試將輸入序列從頭開始與該模式匹配。?
?* find 方法掃描輸入序列以查找與該模式匹配的下一個子序列。?
?* String group(int group)返回在以前匹配操作期間由給定組捕獲的輸入子序列?
?*?
?*?String
?*? boolean endsWith(String suffix)測試此字符串是否以指定的后綴結(jié)束。

start

1.新建web項目UpDown,導入上面介紹的4個jar包

2.新建upload.html文件,用于上傳的前臺的UI界面

upload.html

?

3.新建servlet文件Upload.java文件,用于對上傳的文件進行處理

upload.java

?

4.配置web.xml文件

web.xml

?

5.發(fā)布項目

result

訪問的URL如下:

http://localhost:8080/UpDown/upload.html

upload.html頁面如下:

上傳完成后跳轉(zhuǎn)顯示的頁面如下:

檢查指定的上傳目錄:

檢查文件大小限制(上傳一個大于2M的文件,然后點擊”開始上傳”,界面顯示如下):

檢查文件后綴名過濾(上傳一個exe文件,然后點擊”開始上傳”,界面顯示如下):

遺留&拓展部分:

?* 1.中文亂碼問題? IE界面顯示亂碼、上傳目錄亂碼
?* 2.上傳目錄和程序不在同一臺主機上的處理方式??
?* 2.文件緩存問題
?* 3.文件的端點續(xù)傳功能
?* 4.上傳滾動條問題

answer

1.關(guān)于中文亂碼問題的解決方法

經(jīng)過測試以下語句設置為utf-8即可解決,設置為gbk或gb2312都無法解決中文亂碼問題

sevletFileUpload.setHeaderEncoding("utf-8");

轉(zhuǎn)載于:https://www.cnblogs.com/unbentman/archive/2012/02/21/2362041.html

總結(jié)

以上是生活随笔為你收集整理的文件上传简介1---上传到指定的目录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。