21xrx.com
2024-06-03 05:47:01 Monday
登录
文章检索 我的文章 写文章
最近我在学习 Java 开发
2023-06-10 19:37:10 深夜i     --     --
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 上传视频文件并不难,只需要掌握文件上传控件和上传处理程序的基本用法,同时加上必要的限制和错误处理即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章