javaWeb中的文件上传和下载

文件上传的核心几大步骤:
String savePath=this.getServletContext().getRealPath("/WEB-INF/upload");
File file=new File(savePath);
if(!file.exists() && !file.isDirectory()){
system.out.pritln("文件目录")+savePaht+"不存在";
file.mkdir();
}
1.得到上传文件的保存目录。这时需要判断此目录是否已经存在,如果不存在需要创建。file.mkdir();
String message="";
2
2.1创建一个DiskFileItemFactory对象DiskFileItemFactory factory=new DiskFileItemFactory();
2.2创建文件上传解析器ServletFileUpload upload=new ServletFileUpload(factory);
2.3解决上传文件名中文乱码的问题upload.setHeaderEncoding("UTF-8");
2.4判断提交的数据是否是上传表单里的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
return;
}
2.5使用ServletFileUpload解析器解析上传的数据,解析结果返回的是是一个List<FileItem>
List<FileItem> list=upload.parseRequest(request);
for(FileItem item:list){
//如果FileItem里的是普通输入项的数据
if(item.isFormFiled(){
String name=item.getFiledName();
//解决普通输入项的中文乱码问题
String value=item.getString("UTF-8");
system.out.pritln(name+"="+value);
}else{
//如果FileItem里面封装的是上传文件,先得到上传文件的名称
String fileName=item.getName();
system.out.println(fileName);
if(fileName==null||fileName.trim().equals(""){
continue;
}
fileName=fileName.subString(fileName.lastIndexOf("\\")+1;
InputStream in=item.getInputStream();
FileOutputStream fos=new FileOutputStream(savePath+"\\"+fileName);
int len=0;
byte buffer[]=new byte[1024];
//从输入流里将数据读到缓冲区
while((len=in.read(buffer))>0){
//通过输出流将缓冲区的数据写到指定目录
fos.write(buffer,0,len);
}
in.close();
fos.close();
//删除处理文件时产生的临时文件
item.delete();
message="文件上传成功";
}



}


在Web.xml文件中注册UploadHandleServlet

?
1
2
3
4
5
6
7
8
9
< servlet >
< servlet-name >UploadHandleServlet</ servlet-name >
< servlet-class >my.web.controller.UploadHandleServlet</ servlet-class >
</ servlet >
 
< servlet-mapping >
< servlet-name >UploadHandleServlet</ servlet-name >
< url-pattern >/servlet/UploadHandleServlet</ url-pattern >
</ servlet-mapping >


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值