欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java框架文件上傳代碼 java文件傳輸框架

java怎么用commons-fileupload實現(xiàn)上傳文件

文件上傳步驟:

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供洪山網(wǎng)站建設(shè)、洪山做網(wǎng)站、洪山網(wǎng)站設(shè)計、洪山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、洪山企業(yè)網(wǎng)站模板建站服務(wù),10多年洪山做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

1.?導(dǎo)入jar包

指毀??????common-fileupload.jar

common-io.jar??????

2.?上傳jsp頁面編輯

body

form?action="${pageContext.request.contextPath}/servlet/UploadHandleServlet"?enctype="multipart/form-data"?method="post"

上傳用戶:input?type="text"?name="username"br/

上傳文件1:input?type="file"?name="file1"br/

上傳文件2:input?type="file"?name="file2"br/

input?type="submit"?value="提交"

/form

/body????

3.?消息提示頁面(成功or失敗)?????

body

${message}

/body????

4.?處理文件上傳的servlet編寫???

import?java.io.File;

import?java.io.FileOutputStream;

import?java.io.IOException;

import?java.io.InputStream;

import?java.util.List;

import?java.util.UUID;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

import?org.apache點抗 mons.fileupload.FileItem;

import?org.apache點抗 mons.fileupload.FileUploadBase;

import?org.apache點抗 mons.fileupload.ProgressListener;

import?org.apache點抗 mons.fileupload.disk.DiskFileItemFactory;

import?org.apache點抗 mons.fileupload.servlet.ServletFileUpload;

public?class?UploadHandleServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

//得到上傳文件的保存目錄,將上傳的文件存放于WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的友皮安全

String?savePath?=?this.getServletContext().getRealPath("/WEB-INF/upload");

//上傳時生成的臨時文件保存目錄

String?tempPath?=?this.getServletContext().getRealPath("/WEB-INF/temp");

File?tmpFile?=?new?File(tempPath);

if?(!tmpFile.exists())?{

//創(chuàng)建臨時目錄

tmpFile.mkdir();

}

//消息提示

String?message?=?"";

好逗差?????????????try{

//使用Apache文件上傳組件處理文件上傳步驟:

//1、創(chuàng)建一個DiskFileItemFactory工廠

DiskFileItemFactory?factory?=?new?DiskFileItemFactory();

//設(shè)置工廠的緩沖區(qū)的大小,當(dāng)上傳的文件大小超過緩沖區(qū)的大小時,就會生成一個臨時文件存放到指定的臨時目錄當(dāng)中。

factory.setSizeThreshold(1024*100);//設(shè)置緩沖區(qū)的大小為100KB,如果不指定,那么緩沖區(qū)的大小默認(rèn)是10KB

//設(shè)置上傳時生成的臨時文件的保存目錄

factory.setRepository(tmpFile);

//2、創(chuàng)建一個文件上傳解析器

ServletFileUpload?upload?=?new?ServletFileUpload(factory);

//監(jiān)聽文件上傳進(jìn)度

upload.setProgressListener(new?ProgressListener(){

public?void?update(long?pBytesRead,?long?pContentLength,?int?arg2)?{

System.out.println("文件大小為:"?+?pContentLength?+?",當(dāng)前已處理:"?+?pBytesRead);

/**

*?文件大小為:14608,當(dāng)前已處理:4096

文件大小為:14608,當(dāng)前已處理:7367

文件大小為:14608,當(dāng)前已處理:11419

文件大小為:14608,當(dāng)前已處理:14608

*/

}

});

//解決上傳文件名的中文亂碼

upload.setHeaderEncoding("UTF-8");?

//3、判斷提交上來的數(shù)據(jù)是否是上傳表單的數(shù)據(jù)

if(!ServletFileUpload.isMultipartContent(request)){

//按照傳統(tǒng)方式獲取數(shù)據(jù)

return;

}

//設(shè)置上傳單個文件的大小的最大值,目前是設(shè)置為1024*1024字節(jié),也就是1MB

upload.setFileSizeMax(1024*1024);

//設(shè)置上傳文件總量的最大值,最大值=同時上傳的多個文件的大小的最大值的和,目前設(shè)置為10MB

upload.setSizeMax(1024*1024*10);

//4、使用ServletFileUpload解析器解析上傳數(shù)據(jù),解析結(jié)果返回的是一個ListFileItem集合,每一個FileItem對應(yīng)一個Form表單的輸入項

ListFileItem?list?=?upload.parseRequest(request);

for(FileItem?item?:?list){

//如果fileitem中封裝的是普通輸入項的數(shù)據(jù)

if(item.isFormField()){

String?name?=?item.getFieldName();

//解決普通輸入項的數(shù)據(jù)的中文亂碼問題

String?value?=?item.getString("UTF-8");

//value?=?new?String(value.getBytes("iso8859-1"),"UTF-8");

System.out.println(name?+?"="?+?value);

}else{//如果fileitem中封裝的是上傳文件

//得到上傳的文件名稱,

String?filename?=?item.getName();

System.out.println(filename);

if(filename==null?||?filename.trim().equals("")){

continue;

}

//注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來的文件名是帶有路徑的,如:?c:\a\b\1.txt,而有些只是單純的文件名,如:1.txt

//處理獲取到的上傳文件的文件名的路徑部分,只保留文件名部分

filename?=?filename.substring(filename.lastIndexOf("\\")+1);

//得到上傳文件的擴(kuò)展名

String?fileExtName?=?filename.substring(filename.lastIndexOf(".")+1);

//如果需要限制上傳的文件類型,那么可以通過文件的擴(kuò)展名來判斷上傳的文件類型是否合法

System.out.println("上傳的文件的擴(kuò)展名是:"+fileExtName);

//獲取item中的上傳文件的輸入流

InputStream?in?=?item.getInputStream();

//得到文件保存的名稱

String?saveFilename?=?makeFileName(filename);

//得到文件的保存目錄

String?realSavePath?=?makePath(saveFilename,?savePath);

//創(chuàng)建一個文件輸出流

FileOutputStream?out?=?new?FileOutputStream(realSavePath?+?"\\"?+?saveFilename);

//創(chuàng)建一個緩沖區(qū)

byte?buffer[]?=?new?byte[1024];

//判斷輸入流中的數(shù)據(jù)是否已經(jīng)讀完的標(biāo)識????????int?len?=?0;

//循環(huán)將輸入流讀入到緩沖區(qū)當(dāng)中,(len=in.read(buffer))0就表示in里面還有數(shù)據(jù)

while((len=in.read(buffer))0){

//使用FileOutputStream輸出流將緩沖區(qū)的數(shù)據(jù)寫入到指定的目錄(savePath?+?"\\"?+?filename)當(dāng)中

out.write(buffer,?0,?len);

}

//關(guān)閉輸入流

in.close();

//關(guān)閉輸出流

out.close();????????//刪除處理文件上傳時生成的臨時文件????????//item.delete();????????message?=?"文件上傳成功!";

}

}

}catch?(FileUploadBase.FileSizeLimitExceededException?e)?{

e.printStackTrace();

request.setAttribute("message",?"單個文件超出最大值!!!");

request.getRequestDispatcher("/message.jsp").forward(request,?response);

return;

}catch?(FileUploadBase.SizeLimitExceededException?e)?{

e.printStackTrace();

request.setAttribute("message",?"上傳文件的總的大小超出限制的最大值!!!");

request.getRequestDispatcher("/message.jsp").forward(request,?response);

return;

}catch?(Exception?e)?{

message=?"文件上傳失敗!";

e.printStackTrace();

}

request.setAttribute("message",message);

request.getRequestDispatcher("/message.jsp").forward(request,?response);

}

private?String?makeFileName(String?filename){?//2.jpg

//為防止文件覆蓋的現(xiàn)象發(fā)生,要為上傳文件產(chǎn)生一個唯一的文件名

return?UUID.randomUUID().toString()?+?"_"?+?filename;

}??

private?String?makePath(String?filename,String?savePath){

//得到文件名的hashCode的值,得到的就是filename這個字符串對象在內(nèi)存中的地址

int?hashcode?=?filename.hashCode();

int?dir1?=?hashcode0xf;?//0--15

int?dir2?=?(hashcode0xf0)4;?//0-15

//構(gòu)造新的保存目錄

String?dir?=?savePath?+?"\\"?+?dir1?+?"\\"?+?dir2;?//upload\2\3?upload\3\5

if(!file.exists()){

file.mkdirs();

}

return?dir;

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

5.編寫web.xml文件(servlet的映射配置)???

servlet

servlet-nameUploadHandleServlet/servlet-name

servlet-classme.gacl.web.controller.UploadHandleServlet/servlet-class

/servlet

servlet-mapping

servlet-nameUploadHandleServlet/servlet-name

url-pattern/servlet/UploadHandleServlet/url-pattern

/servlet-mapping

注:?網(wǎng)上看到的,出處找不到了,望見諒!!

文章名稱:java框架文件上傳代碼 java文件傳輸框架
網(wǎng)頁地址:http://chinadenli.net/article9/dsphjih.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)品牌網(wǎng)站設(shè)計App開發(fā)網(wǎng)頁設(shè)計公司虛擬主機(jī)服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)