为了账号安全,请及时绑定邮箱和手机立即绑定

Java文件的上传与下载(Servlet+JSP)

标签:
Java

一、文件上传
jar包:commons-fileupload-1.3.3.jar,commons-io-2.5.jar
简说流程:request<file>-->Servlet.service(转化request携带的数据,获取输入流)-->通过输出流写到服务器磁盘
1、upload.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>文件上传</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/uploadServlet" method="post" enctype="multipart/form-data">

上传文件1:<input type="file" name="file_1" size="40">
上传文件2:<input type="file" name="file_2" size="40">
<input type="submit" value="提交">

</form>

</body>
</html>
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<FileItem> 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);
}

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 13
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消