在JSP(JavaServer Pages)中进行文件上传涉及到HTML表单和处理文件上传的Servlet或JSP页面。以下是一个简单的示例,演示如何在JSP中实现文件上传:

1. 创建文件上传表单页面(upload.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
    <title>File Upload</title>
</head>
<body>
    <h2>File Upload</h2>

    <form action="uploadServlet" method="post" enctype="multipart/form-data">
        <label for="file">Select File:</label>
        <input type="file" name="file" id="file"><br>

        <input type="submit" value="Upload">
    </form>
</body>
</html>

2. 创建处理文件上传的Servlet(UploadServlet.java):
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/uploadServlet")
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2,   // 2MB
                 maxFileSize = 1024 * 1024 * 10,        // 10MB
                 maxRequestSize = 1024 * 1024 * 50)     // 50MB
public class UploadServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        // 获取文件上传的部分
        Part filePart = request.getPart("file");

        // 获取上传文件的名称
        String fileName = extractFileName(filePart);

        // 保存文件到服务器
        String savePath = "C:\\uploads\\";  // 保存路径,可以根据需要修改
        File fileSaveDir = new File(savePath);
        if (!fileSaveDir.exists()) {
            fileSaveDir.mkdir();
        }

        // 构建完整的文件保存路径
        String filePath = savePath + File.separator + fileName;

        // 将文件写入磁盘
        filePart.write(filePath);

        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("<h2>File " + fileName + " has been uploaded successfully!</h2>");
        out.println("</body>");
        out.println("</html>");
    }

    // 从Part的Header中提取文件名
    private String extractFileName(Part part) {
        String contentDisp = part.getHeader("content-disposition");
        String[] items = contentDisp.split(";");
        for (String s : items) {
            if (s.trim().startsWith("filename")) {
                return s.substring(s.indexOf("=") + 2, s.length()-1);
            }
        }
        return "";
    }
}

3. 配置文件上传的一些参数:

在Servlet中,通过 @MultipartConfig 注解配置文件上传的一些参数,如文件大小限制等。

4. 运行应用:

访问 upload.jsp 页面,选择文件并上传。上传的文件将保存在指定的目录中,并显示上传成功的消息。

上述示例展示了一个简单的文件上传过程,实际应用中可能需要更多的处理逻辑和安全性措施。请确保在实际开发中进行适当的异常处理、文件类型验证和安全性检查。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6913/JSP