1. 河豚號(hào) > 生活百科 >

fileupload控件上傳文章(分享fileupload獲取文件路徑)

一、什么是fileUpload?

fileUpload是apache的commons組件提供的上傳組件,它最主要的工作就是幫我們解析request.getInpustream()。可以參考在線API文檔:

http://tool.oschina.net/apidocs/apidoc?api=commons-fileupload

二、fileupload組件工作原理

 

JAVA學(xué)習(xí)筆記——fileUpload文件上傳

 

三、fileupload核心API

1. DiskFileItemFactory

構(gòu)造器

1) DiskFileItemFactory() // 使用默認(rèn)配置

2) DiskFileItemFactory(int sizeThreshold, File repository)

sizeThreshold 內(nèi)存緩沖區(qū), 不能設(shè)置太大, 否則會(huì)導(dǎo)致JVM崩潰

repository 臨時(shí)文件目錄

2. ServletFileUpload

1) isMutipartContent(request) // 判斷上傳表單是否為multipart/form-data類型 true/false

2) parseRequest(request) // 解析request, 返回值為List類型

3) isFormField() //是否是普通文件

4) setFileSizeMax(long) // 上傳文件單個(gè)最大值 fileupload內(nèi)部通過拋出異常的形式處理, 處理文件大小超出限制, 可以通過捕獲這個(gè)異常, 提示給用戶

5) setSizeMax(long) // 上傳文件總量最大值

6) setHeaderEncoding(String) // 設(shè)置編碼格式

四、實(shí)現(xiàn)過程

1.導(dǎo)入jar包

 

JAVA學(xué)習(xí)筆記——fileUpload文件上傳

 

2.編寫jsp

 

JAVA學(xué)習(xí)筆記——fileUpload文件上傳

 

3.編寫servlet

//創(chuàng)建業(yè)務(wù)層對(duì)象

NewsService newsService = new NewsService();

InputStream in = null;

OutputStream out = null;

int id = 0;//頁面?zhèn)鱽淼膇d值

//創(chuàng)建解析器工廠

DiskFileItemFactory factory = new DiskFileItemFactory();

//獲取解析器

ServletFileUpload upload = new ServletFileUpload(factory);

// 上傳表單是否為multipart/form-data類型

if(!upload.isMultipartContent(request)) {

return ;

}

//解析request的輸入流

try {

List parseRequest = upload.parseRequest(request);

//迭代list

for(FileItem f:parseRequest) {

if(f.isFormField()) {

//普通字段

id = Integer.parseInt(f.getFieldName());

String value = f.getString();

System.out.println(“name”+”=”+value);

}else {

//上傳文件

//獲取上傳文件名

String name = f.getName();

System.out.println(“文件名”+name);

name = name.substring(name.lastIndexOf(“\”)+1);

System.out.println(name);

//獲取輸入流

in = f.getInputStream();

//獲取上傳文件路徑

String savePath = “D:\workspacedt91\FileUpLoadTestDemo\WebContent\images\”+name;

//上傳文件名若不存在, 則先創(chuàng)建

File path = new File(savePath);

if(!path.exists()) {

path.getParentFile().mkdir();

}

//獲取輸出流

out = new FileOutputStream(path);

int len = 0;

byte[] b = new byte[1024];

while((len = in.read(b)) > 0) {

out.write(b,0,len);

}

System.out.println(“上傳成功”);

//保存到數(shù)據(jù)庫

int count = newsService.saveUrl(name, id);

if(count > 0 ) {

System.out.println(“路徑保存成功”);

}else {

System.out.println(“路徑保存失敗”);

}

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

System.out.println(“上傳失敗”);

e.printStackTrace();

}finally {

if(in != null) {

in.close();

}

if(out != null) {

out.close();

}

}

本文由網(wǎng)上采集發(fā)布,不代表我們立場(chǎng),轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zltfw.cn/shbk/38936.html

聯(lián)系我們

在線咨詢:點(diǎn)擊這里給我發(fā)消息

微信號(hào):15705946153

工作日:9:30-18:30,節(jié)假日休息