Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java上传文件到指定目录

作者:资本principal   发布日期:2026-07-21   浏览:47

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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("/upload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String UPLOAD_DIRECTORY = "uploads"; // 指定上传目录

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取上传文件的part
        Part filePart = request.getPart("file");
        String fileName = extractFileName(filePart);

        // 创建上传目录(如果不存在)
        File uploadDir = new File(UPLOAD_DIRECTORY);
        if (!uploadDir.exists()) {
            uploadDir.mkdir();
        }

        // 将文件写入指定目录
        try (InputStream fileContent = filePart.getInputStream();
             FileOutputStream outputStream = new FileOutputStream(new File(uploadDir, fileName))) {
            byte[] buffer = new byte[8192];
            int bytesRead;
            while ((bytesRead = fileContent.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
            response.getWriter().println("File upload failed.");
            return;
        }

        response.getWriter().println("File uploaded successfully.");
    }

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

解释说明:

  1. 导入必要的包:代码中导入了处理文件上传所需的类,如javax.servlet.http.Partjava.io.*等。
  2. 定义上传目录UPLOAD_DIRECTORY变量指定了文件上传的目标目录。你可以根据需要修改这个路径。
  3. 创建Servlet:使用@WebServlet注解将该类映射到/upload路径,并使用@MultipartConfig注解启用多部分请求支持。
  4. 处理POST请求:在doPost方法中,通过request.getPart("file")获取上传的文件。
  5. 创建上传目录:检查并创建目标上传目录(如果它不存在)。
  6. 保存文件:将上传的文件内容从InputStream读取并写入到指定的文件中。
  7. 提取文件名extractFileName方法从HTTP头中提取文件名。
  8. 返回响应:上传成功后,向客户端返回成功消息;如果上传失败,则返回错误信息。

希望这段代码和解释对你有帮助!

上一篇:java 获取请求ip

下一篇:java 运算符

大家都在看

java url decode

java判断是windows还是linux

java原始数据类型

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java常用的设计模式有哪些

java list 查找

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站