tomcat文件上傳注意問題(采用fileupload組件)

1.上傳文件的中文亂碼
1.1 解決文件的亂碼
ServletFileUpload.setHeaderEncoding("UTF-8")
1.2 解決普通輸入項的亂碼(注意,表單類型為multipart/form-data的時候肯适,設置request的編碼是無效的)
FileItem.setString("UTF-8"); //解決亂碼

2.在處理表單之前乘盼,要記得調(diào)用:
ServletFileUpload.isMultipartContent方法判斷提交表單的類型坦喘,如果該方法返回true货葬,則按上傳方式處理财搁,否則按照傳統(tǒng)方式處理表單即可个束。

3.設置解析器緩沖區(qū)的大小慕购,以及臨時文件的刪除
設置解析器緩沖區(qū)的大小 DiskFileItemFactory.setSizeThreshold(1024*1024);
臨時文件的刪除:在程序中處理完上傳文件后,一定要記得調(diào)用item.delete()方法茬底,以刪除臨時文件

4.在做上傳系統(tǒng)時沪悲,千萬要注意上傳文件的保存目錄,這個上傳文件的保存目錄絕對不能讓外界直接訪問到阱表。

5.限制上傳文件的類型
在處理上傳文件時殿如,判斷上傳文件的后綴名是不是允許的

6.限制上傳文件的大小
調(diào)用解析器的ServletFileUpload.setFileSizeMax(102410245);就可以限制上傳文件的大小,如果上傳文件超出限制最爬,則解析器會拋FileUploadBase.FileSizeLimitExceededException異常涉馁,程序員通過是否抓到這個異常,進而就可以給用戶友好提示爱致。

7.如何判斷空的上傳輸入項
String filename = item.getName().substring(item.getName().lastIndexOf("\")+1); //""
if(filename==null || filename.trim().equals("")){
continue;
}

8烤送、為避免上傳文件的覆蓋,程序在保存上傳文件時糠悯,要為每一個文件生成一個唯一的文件名
public String generateFileName(String filename){
//83434-83u483-934934
return UUID.randomUUID().toString() + "_" + filename;
}

9帮坚、為避免在一個文件夾下面保存超過1000個文件妻往,影響文件訪問性能,程序應該把上傳文件打散后存儲试和。
public String generateSavePath(String path,String filename){
int hashcode = filename.hashCode(); //121221
int dir1 = hashcode&15;
int dir2 = (hashcode>>4)&0xf;

    String savepath = path + File.separator + dir1 + File.separator + dir2;
    File file = new File(savepath);
    if(!file.exists()){
        file.mkdirs();
    }
    return savepath;
}

10讯泣、監(jiān)聽上傳進度
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(new ProgressListener(){
public void update(long pBytesRead, long pContentLength, int pItems) {
System.out.println("當前已解析:" + pBytesRead);
}
});

11、在web頁面中添加動態(tài)上傳輸入項

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阅悍,一起剝皮案震驚了整個濱河市好渠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌节视,老刑警劉巖拳锚,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肴茄,居然都是意外死亡晌畅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門寡痰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抗楔,“玉大人,你說我怎么就攤上這事拦坠×铮” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵贞滨,是天一觀的道長入热。 經(jīng)常有香客問我,道長晓铆,這世上最難降的妖魔是什么勺良? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮骄噪,結果婚禮上尚困,老公的妹妹穿的比我還像新娘。我一直安慰自己链蕊,他們只是感情好事甜,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滔韵,像睡著了一般逻谦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陪蜻,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天邦马,我揣著相機與錄音,去河邊找鬼。 笑死勇婴,一個胖子當著我的面吹牛忱嘹,可吹牛的內(nèi)容都是我干的嘱腥。 我是一名探鬼主播耕渴,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼齿兔!你這毒婦竟也來了橱脸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤分苇,失蹤者是張志新(化名)和其女友劉穎添诉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體医寿,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡栏赴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靖秩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片须眷。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沟突,靈堂內(nèi)的尸體忽然破棺而出花颗,到底是詐尸還是另有隱情,我是刑警寧澤惠拭,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布扩劝,位于F島的核電站,受9級特大地震影響职辅,放射性物質(zhì)發(fā)生泄漏棒呛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一域携、第九天 我趴在偏房一處隱蔽的房頂上張望簇秒。 院中可真熱鬧,春花似錦涵亏、人聲如沸宰睡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拆内。三九已至,卻和暖如春宠默,著一層夾襖步出監(jiān)牢的瞬間麸恍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抹沪,地道東北人刻肄。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像融欧,于是被迫代替她去往敵國和親敏弃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文包括:1噪馏、文件上傳概述2麦到、利用 Commons-fileupload 組件實現(xiàn)文件上傳3、核心API——Dis...
    廖少少閱讀 12,551評論 5 91
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理欠肾,服務發(fā)現(xiàn)瓶颠,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 佛說:苦非苦刺桃,樂非樂粹淋,只是一時的執(zhí)念而已。執(zhí)于一念瑟慈,將受困于一念桃移,一念放下,會自在于心間封豪。物隨心轉(zhuǎn)谴轮,境由心造,煩惱...
    陜西清清河邊草閱讀 447評論 2 2
  • 昨天晚上下雨了吹埠,走過馬路上深深淺淺的水洼第步。忽然想起好多年前火了一時的一個臺灣組合——南拳媽媽。 那時候我還在上六年...
    一盒哪吒閱讀 377評論 0 1
  • 那時,鴻蒙還未開 你用渾濁的眼睛盯著上帝 終于刷袍,他受不了了翩隧,給了你智慧
    萬象峰年閱讀 267評論 0 2