码迷,mamicode.com
首页 > 编程语言 > 详细

【Java】Servlet文件上传-无需导入其他Jar包

时间:2019-07-03 22:55:58      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:character   tmp   osi   ext   art   需要   void   class   coding   

Servlet3.0中,改进了部分API,简化了Java Web的开发。

如,文件上传。传统的文件上传需要借助于common-fileupload等工具,很复杂,借助Servlet3.0的API则极为简单。

上传页面upload.jsp/upload.html

    <form method="post" action="upload" enctype="multipart/form-data">
        选择文件:<input type="file" id="file" name="file"><br>
        <input type="submit" value="提交">
    </form>

处理上传的Servlet

// Servlet3.0 相当于配置web.xml
@WebServlet(name="Upload",urlPatterns={"/upload"})
// 文件上传的注解
@MultipartConfig
public class Upload extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            // 解决中文乱码
            response.setContentType("text/html;charset=utf-8");
            request.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            File path = new File("D://tmp");
            if (!path.exists()){
                path.mkdir();
            }
            Part part = request.getPart("file");
            out.println("size:"+part.getSize()+"<br>");
            // tomcat7 下需要下面的方法获取文件名
            String cd = part.getHeader("Content-Disposition");
            //截取不同类型的文件需要自行判断
            String filename = cd.substring(cd.lastIndexOf("=")+2, cd.length()-1);
            // Tomcat8以上只需要 part.getSubmittedFileName() 方法可以直接获取
//            将文件上传到服务器
            String filePath = path.getPath() + File.separator + filename;
            part.write(filePath);
            System.out.println("File Upload : " + filePath);
    }

}

 

【Java】Servlet文件上传-无需导入其他Jar包

标签:character   tmp   osi   ext   art   需要   void   class   coding   

原文地址:https://www.cnblogs.com/to-red/p/11129451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!