程序员社区

使用第三方插件FileUpload实现文件上传

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="${pageContext.request.contextPath}/registerServlet2"
        method="post" enctype="multipart/form-data">
    姓名:<input type="text" name="name"/>
    年龄:<input type="text" name="age"/>
    照片:<input type="file" name="photo"/>
    <input type="submit" value="注册"/>
  </form>
  </body>
</html>
@WebServlet("/registerServlet2")
public class RegisterServlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //判断请求是否为Multipart请求
        if(!ServletFileUpload.isMultipartContent(request)){
           throw new RuntimeException("当前情请求不支持上传请求");
       }
        try {
            //创建一个FileItem工厂
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //创建文件上传核心组件
            ServletFileUpload upload = new ServletFileUpload(factory);
            //解析请求,获取到所有的item
            List<FileItem> items = upload.parseRequest(request);
            //遍历items
            for(FileItem item:items){
                if(item.isFormField()){
                    //获取表单项名称
                    String fileName = item.getFieldName();
                    //获取表单项的值
                    String fileValue = item.getString();
                    System.out.println(fileName+":"+fileValue);
                }else{
                    //获取上传文件原始名称
                    String fileName = item.getName();
                    //创建文件输入流
                    InputStream inputStream = item.getInputStream();
                    //获取文件保存在服务器的路径
                    String path = this.getServletContext().getRealPath("/images");
                    //创建目标文件,将用于保存上传文件
                    File decFile = new File(path,fileName);
                    //创建文件输出流
                    FileOutputStream fileOutputStream = new FileOutputStream(decFile);
                    //将输入流中的数据写入到输出流中
                    int len = -1;
                    byte[] buf = new byte[1024];
                    while((len= inputStream.read(buf))!=-1){
                        fileOutputStream.write(buf,0,len);
                    }
                    inputStream.close();
                    fileOutputStream.close();
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 使用第三方插件FileUpload实现文件上传

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区