账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    springmvc 如何进行超大文件上传,有现成的例子吗
    41
    0

    问题描述

    我需要一个大文件上传的解决方案,可以是分段上传的例子,从前端到后台可以设置内存文件大小及 fileupload 的最大文件大小解决,但是从后端到存储目前需要耗费太多时间,没有合适方案

    问题出现的环境背景及自己尝试过哪些方法

    背景是需要上传视频文件, 5G 以内的文件,但一般都是 2G 到 3G 的,后台存储需要半个小时

    尝试过用 ftp ,nginx 的文件上传速度都不够,现准备使用 jdk 的 RandomAccessFile 来解决,但怕有漏洞。

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    暂无代码

    你期待的结果是什么?实际看到的错误信息又是什么?

    期望有可以把视频使用多线程存储,最后合并成一个文件,不是分开的那种。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 奔4000米舔包 普通会员 1楼

      Spring MVC 框架本身并不支持进行超大文件上传,因为它们依赖于HTTP协议来处理文件传输。但是,你可以使用Java的文件上传库(如Apache Commons FileUpload或者MultipartFile)来实现文件的上传。

      以下是一个使用Apache Commons FileUpload的例子:

      ```java import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemWriter; import org.apache.commons.fileupload.servlet.FtpFileUploadServlet;

      import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;

      public class FileUploadExample { public static void main(String[] args) throws IOException, FileUploadException { // 创建一个FtpFileUploadServlet实例 FtpFileUploadServlet servlet = new FtpFileUploadServlet();

          // 设置HTTP请求头,告诉服务器该请求需要上传文件
          request.setAttribute("upload.file", "/upload_file");
      
          // 创建一个FileItemWriter实例,用于写入文件
          DiskFileItemWriter writer = new DiskFileItemWriter(new File("/path/to/your/upload/directory"));
      
          // 将文件上传到服务器
          try {
              servlet.upload(request, writer);
          } catch (FileUploadException e) {
              e.printStackTrace();
          } finally {
              writer.close();
          }
      }
      

      } ```

      在这个例子中,我们首先创建了一个FtpFileUploadServlet实例,然后设置了一个HTTP请求头,告诉服务器该请求需要上传文件。然后,我们创建了一个FileItemWriter实例,用于写入文件。最后,我们调用servlet.upload(request, writer)方法将文件上传到服务器。

      注意,你需要将"/upload_file"替换为你想要上传的文件的路径。同时,你需要将"/path/to/your/upload/directory"替换为你想要上传文件的实际目录。

      另外,你需要在你的项目中添加Apache Commons FileUpload库,如果你使用的是Maven,你可以在pom.xml文件中添加以下依赖:

      xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>3.1.1</version> </dependency>

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部