Android 将吐出/块文件发送到服务器有什么用

Android 将吐出/块文件发送到服务器有什么用,android,Android,我必须将大型视频文件上传到服务器,但上传时间太长,所以我决定拆分/分块这些文件,然后将它们发送到服务器 分割文件后,我得到如下响应: [ /storage/emulated/0/1493357699.mp4.001, /storage/emulated/0/1493357699.mp4.002, /storage/emulated/0/1493357699.mp4.003, /storage/emulated/0/1493357699.mp4.004, /storage/emulated/0/1

我必须将大型视频文件上传到服务器,但上传时间太长,所以我决定拆分/分块这些文件,然后将它们发送到服务器

分割文件后,我得到如下响应:

[ /storage/emulated/0/1493357699.mp4.001, /storage/emulated/0/1493357699.mp4.002, /storage/emulated/0/1493357699.mp4.003, /storage/emulated/0/1493357699.mp4.004, /storage/emulated/0/1493357699.mp4.005, /storage/emulated/0/1493357699.mp4.006, /storage/emulated/0/1493357699.mp4.007, /storage/emulated/0/1493357699.mp4.008 ] 
我的想法是,将吐痰/块文件上传到服务器有什么用?

我的文件拆分代码:
公共静态列表拆分文件(文件f){
试一试{
int partCounter=1;
列表结果=新建ArrayList();
int-sizeOfFiles=1024*1024;//1MB
字节[]缓冲区=新字节[sizeOfFiles];
//创建一个大小为一个块大小的字节缓冲区
BufferedInputStream bis=新的BufferedInputStream(新文件输入流(f));
String name=f.getName();
int-tmp=0;
而((tmp=bis.read(buffer))>0){
File newFile=新文件(f.getParent(),name++“+String.format(“%03d”,partCounter++”);
//将文件命名为.001、.002、。。。
FileOutputStream out=新的FileOutputStream(新文件);
out.write(buffer,0,tmp);//tmp是块大小。最后一个块需要它,
//可能小于1MB。
结果.添加(新文件);
}
返回结果;
}捕捉(可抛可抛){
printStackTrace();
}
返回null;
}

我已经在我的一个项目中实现了。我认为有两个主要原因:

  • 实现上传区块的多线程/多连接。您可以同时上载多个块
  • 如果任何一个区块未能上传,则停止/恢复其余区块的上传(取决于服务器响应)

  • 你的意思是,你应该用什么来上传这些块呢?毫无疑问,上传吐痰/块而不是上传大文件有什么用,因为有人说发送大视频块files@RujulGandhi请阅读您找到的实际问题和链接。这是完全不相关的。我使用Socket.io和Nodejs将区块文件发送到服务器。我有一个问题,您的代码没有在指定目录中写入最后一块。所以当我想得到最后一个区块时,我的应用程序崩溃了发送区块文件意味着快速上传?而是发送大文件
     public static List<File> splitFile(File f) {
    
            try {
    
                int partCounter = 1;
                List<File> result = new ArrayList<>();
                int sizeOfFiles = 1024 * 1024;// 1MB
                byte[] buffer = new byte[sizeOfFiles];
                // create a buffer of bytes sized as the one chunk size
    
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
                String name = f.getName();
    
                int tmp = 0;
                while ((tmp = bis.read(buffer)) > 0) {
                    File newFile = new File(f.getParent(), name + "." + String.format("%03d", partCounter++));
                    // naming files as <inputFileName>.001, <inputFileName>.002, ...
                    FileOutputStream out = new FileOutputStream(newFile);
                    out.write(buffer, 0, tmp);//tmp is chunk size. Need it for the last chunk,
                    // which could be less then 1 mb.
                    result.add(newFile);
                }
                return result;
            } catch (Throwable throwable) {
                throwable.printStackTrace();
            }
            return null;
        }