java与jsp的上传下载_Java文件的上传与下载(Servlet+JSP)

一、文件上传

jar包:commons-fileupload-1.3.3.jar,commons-io-2.5.jar

简说流程:request-->Servlet.service(转化request携带的数据,获取输入流)-->通过输出流写到服务器磁盘

1、upload.jsp

pageEncoding="utf-8"%>

文件上传

上传文件1:

上传文件2:

2、UploadServlet.java

public class UploadServlet extends HttpServlet

{

/**

* 注释内容

*/

private static final long serialVersionUID = -3592230091955074245L;

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException

{

System.out.println("i"m in uploadServlet service method");

String resultMsg="";

//获取真实保存的路径

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

System.out.println("文件保存的路劲:"+savePath);

File file = new File(savePath);

//这个路径是否是个文件夹

if(file.isDirectory() || !file.exists())

{

file.mkdir();

}

DiskFileItemFactory factory = new DiskFileItemFactory();

//设置默认缓存大小

factory.setSizeThreshold(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD);

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("UTF-8");

//设置文件大小限制

upload.setFileSizeMax(40*1024*1024);

//这里很重要 是这个数据格式的支持多媒体multipart/form-data 在JSP上传页面中也要写上

if(!ServletFileUpload.isMultipartContent(req))

{

//按照传统方式获取数据

System.out.println("数据格式不正确");

return;

}

try

{

List list = upload.parseRequest(req);

for(FileItem item : list)

{

//从request总获取数据,有可能是表单提交的文本键值

if(!item.isFormField())

{

System.out.println("处理上传文件中");

String filename = item.getName();

//判断上传路径是否合法

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

{

continue;

}

//获取上传文件名

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

InputStream in = item.getInputStream();

FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);

byte buffer[] = new byte[1024];

int len = -1;

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

{

out.write(buffer, 0, len);

}

in.close();

out.close();

item.delete();

}

}

resultMsg="上传文件成功";

}

catch (FileUploadException e)

{

resultMsg="上传失败";

e.printStackTrace();

}

req.setAttribute("resultMsg", resultMsg);

req.getRequestDispatcher("/upload_result.jsp").forward(req, resp);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值