javaweb servlet3 上传文件 作者:马育民 • 2023-09-12 10:02 • 阅读:10036 # 介绍 上传文件是最常用的功能之一,如网购评论时要发图片,报考网站要上传个人信息等 # 实现html 创建 upload.jsp,关键内容如下: ```html 上传图片: 描述: ``` **关键:** - `method="post"` 必须是 `post` 方法 - `enctype="multipart/form-data"`:enctype 是表单请求正文的类型,上传文件必须设置,表示以 **流** 的方式将数据发送给服务器 - ``:上传文件控件,注意名字 # 相关类和方法 获取 `Part` 接口对象:`req.getPart("img")` `Part` 接口,通过该接口获取上传文件相关信息 获取上传文件名:`head.getSubmittedFileName()` 获取文件大小:`head.getSize()` 写入到指定位置:`head.write()` # 实现Servlet **有缺点:**不能上传同名文件 ``` @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Part head = req.getPart("img"); if(head!=null) { // 上传文件才执行下面代码 if(head.getSubmittedFileName()!=null && !"".equals(head.getSubmittedFileName())) { // 在当前工程下创建upload文件夹 // upload文件夹的绝对路径(全路径) String upload = req.getServletContext().getRealPath("/upload"); File uploadFile = new File(upload); if (!uploadFile.exists()) { // 创建文件夹 uploadFile.mkdirs(); } // 拼装的是保存上传文件的全路径 File file = new File(uploadFile, head.getSubmittedFileName()); // 保存 head.write(file.getAbsolutePath()); //文件名称 System.out.println(head.getSubmittedFileName()); //文件大小 System.out.println(head.getSize()); } } // 通过request对象获取浏览器提交的参数 String username = req.getParameter("descrip"); } ``` ### web.xml 配置 ``` RegistServlet com.boda.servlet.RegistServlet RegistServlet /reg ``` ##### 其他配置 在 `` 标签中还可以配置下面内容: ``` 接收数据大于该值时,将缓存数据写入到文件中 上传文件的临时目录 5*1024*1024 允许上传文件的最大大小(一次上传多个文件,这里设置一个文件的最大大小),默认为-1,无限制,单位:byte 5*1024*1024 * 10 请求的最大大小(一次上传多个文件,这里设置所有文件的最大大小),默认为-1,无限制,单位:byte ``` ### 使用注解 ``` @WebServlet(urlPatterns = "/reg") @MultipartConfig( maxFileSize = 5*1024*1024,maxRequestSize = 5*1024*1024 * 10) public class RegistServlet extends HttpServlet { } ``` 原文出处:http://www.malaoshi.top/show_1IX6DgJisHPL.html