如何检索上传的图像并使用JSP保存到文件?

use*_*729 1 jsp file-upload image

抱歉,我对jsp完全不熟悉.

如何检索上传的图像并使用jsp保存到文件?

Bal*_*usC 9

  1. 创建一个Web项目.
  2. 创建至少包含以下内容的JSP文件:

    <form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit">
    </form>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 转到Apache Commons FileUpload主页,阅读 " 用户指南"和" 常见问题解答"部分.

  4. 下载以下库的二进制文件:

  5. 解压缩拉链并将JAR文件放在/WEB-INF/libWeb项目中.

  6. 创建一个至少包含以下内容的Servlet类:

    public class UploadServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            List<FileItem> items = null;
            try {
                items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
            } catch (FileUploadException e) {
                throw new ServletException("Cannot parse multipart request.", e);
            }
            for (FileItem item : items) {
                if (item.isFormField()) {
                    // Process regular form fields here the same way as request.getParameter().
                    // You can get parameter name by item.getFieldName();
                    // You can get parameter value by item.getString();
                } else {
                    // Process uploaded fields here.
                    String filename = FilenameUtils.getName(item.getName()); // Get filename.
                    File file = new File("/path/to/uploads", filename); // Define destination file.
                    item.write(file); // Write to destination file.
                }
            }
            // Show result page.
            request.getRequestDispatcher("result.jsp").forward(request, response);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  7. 在web.xml中映射servlet,如下所示:

    <servlet>
        <servlet-name>upload</servlet-name>
        <servlet-class>mypackage.UploadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>upload</servlet-name>
        <url-pattern>/upload</url-pattern>
    </servlet-mapping>
    
    Run Code Online (Sandbox Code Playgroud)

那应该是它.当您在JSP中提交表单时,它将调用/upload<url-pattern>servlet 匹配的操作,然后servlet将在该doPost()方法中执行其任务.最后,这一切都相当简单.希望这可以帮助.