javaweb上传文件Word下载.docx

上传人:b****2 文档编号:3198014 上传时间:2023-05-01 格式:DOCX 页数:15 大小:205.05KB
下载 相关 举报
javaweb上传文件Word下载.docx_第1页
第1页 / 共15页
javaweb上传文件Word下载.docx_第2页
第2页 / 共15页
javaweb上传文件Word下载.docx_第3页
第3页 / 共15页
javaweb上传文件Word下载.docx_第4页
第4页 / 共15页
javaweb上传文件Word下载.docx_第5页
第5页 / 共15页
javaweb上传文件Word下载.docx_第6页
第6页 / 共15页
javaweb上传文件Word下载.docx_第7页
第7页 / 共15页
javaweb上传文件Word下载.docx_第8页
第8页 / 共15页
javaweb上传文件Word下载.docx_第9页
第9页 / 共15页
javaweb上传文件Word下载.docx_第10页
第10页 / 共15页
javaweb上传文件Word下载.docx_第11页
第11页 / 共15页
javaweb上传文件Word下载.docx_第12页
第12页 / 共15页
javaweb上传文件Word下载.docx_第13页
第13页 / 共15页
javaweb上传文件Word下载.docx_第14页
第14页 / 共15页
javaweb上传文件Word下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

javaweb上传文件Word下载.docx

《javaweb上传文件Word下载.docx》由会员分享,可在线阅读,更多相关《javaweb上传文件Word下载.docx(15页珍藏版)》请在冰点文库上搜索。

javaweb上传文件Word下载.docx

form-data;

name="

name"

【空行】

澶у濂?

-----------------------------7dd10711a052c又一个新的文件开始了

file"

;

filename="

aa.txt"

Content-Type:

text/plain

Hello

-----------------------------7dd10711a052c--

 

3.2、服务器如何获取到数据呢?

通过request.getParmeter获取enctype=multipart/form-data表单中的数据,是获取不到的。

只能通过req.getInputStream–获取到是请求的所有正文。

C以下是代码是自己解析文件上传:

publicclassUpServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,

HttpServletResponseresponse)throwsServletException,IOException{

//设置编码

request.setCharacterEncoding("

UTF-8"

);

//测试获取数据

Stringname=request.getParameter("

System.err.println("

nameis:

"

+name);

+===================================="

StringcontentType=request.getHeader("

Content-Type"

contentType=contentType.substring(contentType.lastIndexOf("

="

)+1);

contentTyupeis:

+contentType);

//获取所有字节数

InputStreamin=request.getInputStream();

//byte[]b=newbyte[1024];

//intlen=0;

//while((len=in.read(b))!

=-1){

//Strings=newString(b,0,len);

//System.err.print(s);

//}

以下是正文:

BufferedReaderbr=newBufferedReader(newInputStreamReader(in));

Stringline=null;

br.readLine();

while((line=br.readLine())!

=null){

if(!

line.contains(contentType)){

System.err.println(line);

}

}

}

}

3.3、用第三方组件实现文件上传

组件名称

说明

公司

fileupload

用的最多,集成到struts中,重点。

Apache-1.2,3

cos

性能最快,struts支持配置的cos.

Orialliy=>

0.9

jspsmartupload

200M以上直接崩溃。

3.4、用fileupload实现文件上传

将jar包放到lib目录下

Fileupload的核心类:

DiskfileItemFactory:

设置文件上传时的缓冲区大小和临时目录。

ServletFileUpload:

上传核心文件,用于解析request。

从reqeust中解析出每一个File对象。

示例:

第一步:

开发一个Servlet

第二步:

创建一个保存文件的目录

第三步:

开发页面

3.5、对上传的代码进行优化

3.6、上传多个文件

就是在后台

List<

FileItem>

fis=ServletFileUpload.parseRequest(request);

遍历fis就可以了。

先开发界面:

开发Up3Servlet

封装上传的所有文件信息

名称,大小,类型

try{

ServletFileUploadup=newServletFileUpload(disk);

List<

fs=up.parseRequest(request);

Stringsavepath=getServletContext().getRealPath("

/up"

//声明一个集合,用于保存所有上传的文件信息

Map<

String,Object>

>

ups=newArrayList<

String,Object>

();

for(FileItemf:

fs){

//获取文件名

StringfileName=f.getName();

FileUtils.copyInputStreamToFile(f.getInputStream(),newFile(

savepath+"

/"

+fileName));

//每次一个新的map

Map<

map=newHashMap<

map.put("

fileName"

fileName);

size"

f.getSize());

type"

f.getContentType());

ups.add(map);

f.delete();

//转发到

request.setAttribute("

ups"

ups);

request.getRequestDispatcher("

/jsps/show.jsp"

).forward(request,response);

}catch(Exceptione){

e.printStackTrace();

第四步:

3.6、上传图片时解决重名问题-同时可以解决显示图片的问题

//对文件修改名称,保存扩展名

StringextName=fileName.substring(fileName.lastIndexOf("

."

));

Stringuuid=UUID.randomUUID().toString().replace("

-"

"

StringnewFileName=uuid+extName;

+newFileName));

//保存新的名称

newName"

newFileName);

3.7、上传文件时,能不能说明

mons.fileupload

InterfaceFileItem

开发一个页,带有说明的上传

开发Servlet

publicclassUp4ServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

DiskFileItemFactorydisk=newDiskFileItemFactory();

disk.setSizeThreshold(1024*10);

Filefile=newFile("

d:

/b"

if(file.exists()){

disk.setRepository(file);

try{

Map<

mm=newHashMap<

//遍历且判断是否是文件

if(f.isFormField()){

//则获取到它的文本的内容

Stringdesc=f.getString("

System.err.println("

说明是:

+desc);

mm.put("

desc"

desc);

}else{

StringfileName=f.getName();

FileUtils.copyInputStreamToFile(f.getInputStream(),

newFile(savepath+"

}

//放到req

mm"

mm);

/jsps/show2.jsp"

3.7、上传多个都带说明的

代码:

list=newArrayList<

//声明一个map

mm=null;

for(FileItemfi:

fs){

if(fi.isFormField()){

Stringdesc=fi.getString("

desc);

//放到list

list.add(mm);

}else{

StringfileName=fi.getName();

FileUtils.copyInputStreamToFile(fi.getInputStream(),

mm=newHashMap<

fi.getSize());

list"

list);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2