21xrx.com
2025-03-24 02:11:36 Monday
文章检索 我的文章 写文章
最近我在学习 Java 开发
2023-06-10 19:37:10 深夜i     14     0
Java 上传 视频文件

最近我在学习 Java 开发,其中一个项目需要上传视频文件。经过一番探索和实验,我终于找到了一种可行的方法。在这里分享给大家,希望能帮助到需要的人。

1. 文件上传控件

Java 中可以使用 Apache 的 commons-fileupload 库来实现文件上传功能。首先需要引入该库,并在页面中添加文件上传控件。以下是一个简单的 HTML 代码示例:

其中 enctype 属性的值必须为 "multipart/form-data",表示这是一个上传表单。

2. 上传处理程序

通过表单提交后,需要编写一个上传处理程序来获取上传的文件,并将它保存到指定位置。以下是一个简单的 Servlet 示例:

public class UploadServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // 文件保存路径
    String savePath = "D:/uploads/";
  
    // 获取上传的文件
    Part part = request.getPart("videoFile");
    String fileName = getFileName(part);
    part.write(savePath + fileName);
  
    response.getWriter().println("上传成功!");
  }
  // 获取文件名
  private String getFileName(Part part) {
    String header = part.getHeader("content-disposition");
    String[] elements = header.split(";");
    for (String element : elements) {
      if (element.trim().startsWith("filename")) {
        return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
      }
    }
    return null;
  }
}

在上述代码中,我们首先获取了文件保存路径和上传的文件。然后通过 Part.write() 方法将文件保存到指定位置,最后向客户端返回上传成功的消息。

3. 文件大小和类型限制

在实际应用中,为了防止上传的文件过大和非法类型文件,我们通常会对文件大小和类型进行限制。以下是一种简单的限制方式:

public class UploadServlet extends HttpServlet {
  // 文件最大大小
  private static final long MAX_FILE_SIZE = 1024 * 1024 * 50; // 50MB
  // 允许上传的文件类型
  private static final String[] ALLOWED_FILE_TYPES = "avi";
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // 检查文件大小和类型
    Part part = request.getPart("videoFile");
    long fileSize = part.getSize();
    String contentType = part.getContentType();
    String fileName = getFileName(part);
    String fileExt = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
    if (fileSize > MAX_FILE_SIZE) {
      response.getWriter().println("文件大小超过限制!");
      return;
    }
    boolean allowedType = false;
    for (String type : ALLOWED_FILE_TYPES) {
      if (contentType.equals(type))
        allowedType = true;
        break;
      
    }
    if (!allowedType) {
      response.getWriter().println("不允许上传该类型的文件!");
      return;
    }
    // 保存文件
    String savePath = "D:/uploads/";
    part.write(savePath + fileName);
    response.getWriter().println("上传成功!");
  }
  // 获取文件名
  private String getFileName(Part part) {
    String header = part.getHeader("content-disposition");
    String[] elements = header.split(";");
    for (String element : elements) {
      if (element.trim().startsWith("filename")) {
        return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
      }
    }
    return null;
  }
}

在上述代码中,我们首先定义了文件大小和允许上传的文件类型。然后在文件上传前,检查了文件大小和类型。如果超出限制,就向客户端返回错误消息。

综上所述,Java 上传视频文件并不难,只需要掌握文件上传控件和上传处理程序的基本用法,同时加上必要的限制和错误处理即可。

  
  

评论区