Javaweb使用getPart来接收表单文件

Posted 笑到不能自已

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javaweb使用getPart来接收表单文件相关的知识,希望对你有一定的参考价值。

使用getPart接收表单文件时,注意Tomcat版本要在8之上。

前台 : form.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/test" method="post" enctype="multipart/form-data">
    请选择文件:<input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

后台:TestServlet

@WebServlet(name = "TestServlet", urlPatterns = "/test")
@MultipartConfig
public class UserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         //获取文件,参数为前台的name
        Part part = request.getPart("file");
        //获取文件名,获取到文件名的格式如:a.jpg
        String fileName = part.getSubmittedFileName();
        /**
         截取文件名的后缀名:
         photo.lastIndexOf(‘.‘)的返回值为"."的位置,加1表示后缀名的起始位置。
         photo.substring(photo.lastIndexOf(‘.‘)+1),表示从后缀名的起始位置截取到结束位置。
         * */
        String fileType = fileName.substring(fileName.lastIndexOf(‘.‘) + 1);
        //判断该文件是不是图片格式
        if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {
            //不是图片格式,停止下一步,并将信息反馈给前台页面
            request.setAttribute("msg","上传的文件必须为图片");
            request.getRequestDispatcher(request.getContextPath() + "/form.jsp").forward(request, response);
            return;
        }
        //是图片类型,构建一个上传图片的存储路径
        String path = "E:\upload";
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();  //创建文件和文件夹
        }
        //将part内容写到文件夹内,生成一个文件
        part.write(path + "/" + fileName);
    }
}

String path = "E:\testPic";设置成本地文件夹路径与Tomcat服务器脱离关联,可以防止文件丢失。但需要将该文件夹挂载到Tomcat服务器。

挂载方式:

Eclipse:

1、双击集成在Eclipse中的tomcat服务器

技术图片

2、点击添加额外的web资源

技术图片

3、将本地存储上传文件的文件夹添加进来即可!

技术图片

一定要ctrl + S

IDEA:

技术图片

技术图片

以上是关于Javaweb使用getPart来接收表单文件的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb中实现文件上传的方式有哪些?

Javaweb接收表单数据以及中文乱码处理

问题:JavaWeb中实现文件上传的方式有哪些?

如何在 Tomcat 上运行的 servlet 过滤器中使用 HttpServletRequest#getParts()?

使用getParts()上传多个文件

用idear做javaweb的项目的时候,登录也买你login.jsp接收不到css和js的文件是为什么?