首页 > 其他分享 >Fastdfs 断点续传

Fastdfs 断点续传

时间:2023-01-30 12:00:35浏览次数:28  
标签:断点续传 defaultSize leftLength Fastdfs results originalFileSize file new

采用追加方式:

 1  public String[] uploadBreakpointFile(String group_name, String fileName, NameValuePair[] meta) {
 2         String[] results = null;
 3         File file = new File(fileName);
 4         long originalFileSize = file.length();
 5 
 6         byte[] file_buff;
 7 
 8         //NameValuePair[] vars = new NameValuePair[]{new NameValuePair("fileName", fileName), new NameValuePair("fileSize", String.valueOf(originalFileSize))};
 9         int number = (int) (originalFileSize / defaultSize), leftLength;
10         number = originalFileSize % defaultSize == 0 ? number : number + 1;
11         byte[] bytes;
12         try {
13             InputStream input = new FileInputStream(file);
14             file_buff = new byte[input.available()];
15             input.read(file_buff);
16 
17             if (originalFileSize > defaultSize) {
18 
19                 // 如果文件块大,则实现分块上传,需要准备一个空的文件
20 
21                 for (int i = 0; i < number; i++) {
22                     if (originalFileSize - (i) * defaultSize < defaultSize) {
23                         leftLength = (int) (originalFileSize - (i) * defaultSize);
24                         leftLength = leftLength < 0 ? (int) originalFileSize : leftLength;
25                         bytes = new byte[leftLength];
26                         if (i == 0) {
27                             results = storageClient.upload_appender_file(group_name, bytes, 0, leftLength, FilenameUtils.getExtension(fileName), meta);
28                         } else {
29                             /*采用追加的方式*/
30                             storageClient.append_file(results[0], results[1], bytes, 0, leftLength);
31                         }
32                     } else {
33                         bytes = new byte[(int) defaultSize];
34                         leftLength = (int) defaultSize;
35                         if (i == 0) {
36                             results = storageClient.upload_appender_file(group_name, bytes, 0, leftLength, FilenameUtils.getExtension(fileName), meta);
37                         } else {
38                             /*采用追加的方式*/
39                             storageClient.append_file(results[0], results[1], bytes, 0, leftLength);
40                         }
41                     }
42                 }
43                 //写入内容
44                 storageClient.modify_file(results[0], results[1], 0, file_buff, 0, file_buff.length);
45             } else {
46 //                 如果文件比默认的文件要小,则直接上传
47 
48                 results = storageClient.upload_file(group_name, file_buff, FilenameUtils.getExtension(fileName), meta);
49 
50             }
51         } catch (Exception e) {
52             e.printStackTrace();
53         }
54 
55         return results;
56 
57     }

标签:断点续传,defaultSize,leftLength,Fastdfs,results,originalFileSize,file,new
From: https://www.cnblogs.com/csnjava/p/17075067.html

相关文章

  • Ubuntu上安装FastDFS
    ①:安装参考链接②:所需安装包下载链接:wgethttps://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.......
  • ubuntu20.04安装fastdfs遇到的问题
    说明:git clone在线安装与离线安装都不成功后,选择原来可以正常运行的fastdfs服务,进行tar打包下载,再在新项目上进行解压部署。但由于打包压缩动态库的软连接失效,所以启动出......
  • 100GB以上超大文件上传和断点续传服务器的实现
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag      ......
  • 50GB以上超大文件上传和断点续传服务器的实现
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......
  • 20GB以上超大文件上传和断点续传服务器的实现
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上......
  • 10GB以上超大文件上传和断点续传服务器的实现
    ​ 最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • Flash 以上超大文件上传和断点续传服务器的实现
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持......
  • HTML5 以上超大文件上传和断点续传服务器的实现
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag     ......
  • VUE 以上超大文件上传和断点续传服务器的实现
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......
  • B/S 以上超大文件上传和断点续传服务器的实现
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{......