利用apache的FileUpload组件进行文件上传。

需要导入的包文件:commons-fileupload-1.1.1.jar和commons-io-1.1.jar

页面:
<form action = "/struts2/UploadServlet" method = "post" enctype = "multipart/form-data">
username:<input type = "text" name = "username"><br>
password:<input type = "password" name = "password"><br>
file1 :<input type = "file" name = "file1"><br>
file2 :<input type = "file" name = "file2">
<input type = "submit" value = "submit">
</form>
servlet:
public UploadServlet extends HttpServlet{
public void doPost(HttpRequest request,HttpResponse response) throw ServletException,IOException{
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = request.getRealPath("/upload");//将upload目录作为临时存储的目录
factory.setRepository(new File(path));
factory.setSizeThreshold(1024*1024);//小于1M的文件写到内存中,如果大于1M则写入到磁盘中。
ServletFileUpload upload = new ServletFileUpload(factory);

try{
List<FileItem> list = upload.parseRequest(request);//一个FileItem对应表单中的一个组件,包括(文件类型、普通类型)并不是只对应文件类型
for(FileItem item:list){
if(item.isFormField()){//表单的属性是否为文件类型,不是文件类型true
String name = item.getFieldName();
String value = item.getString();//提取值
request.setAttribute(name,value);
}else{
String name = item.getFieldName();

String value = item.getName();//是文件类型才会返回文件的名称,如果是一般类型返回null
int start = name.lastIndexOf("\\");
String fileName = value.substring(start+1);//真正文件名
request.setAttribute(name,value);

item.write(new File(path,fileName);

//OutputStream os = new FileOutputStream(new FileFile(path,filename);
//InputStream is = item.getInputStream();
//byte[] buffer = new byte[400];
//int length = 0;
//while((length = is.read(buffer))>0){
// os.write(buffer,0,length);
//}
//os.close();
//is.close();
}
}
}
catch(Exception ex){
ex.printStackTrace();
}
request.getRequestDispatcher("upload/result2.jsp").forward(requet,response);
}
}
}

web.xml:
<servlet>
<servlet-name>UploadSerlvet</serlvet-name>
<servlet-class>com.test.serlvet.UploadSerlvet</serlvet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadSerlvet</serlvet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值