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

时间:2017-05-03 05:27:03

标签: 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/1493357699.mp4.005, /storage/emulated/0/1493357699.mp4.006, /storage/emulated/0/1493357699.mp4.007, /storage/emulated/0/1493357699.mp4.008 ] 

我的想法是将吐痰/块文件上传到服务器有什么用?

我的分割文件代码:

 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;
    }

1 个答案:

答案 0 :(得分:1)

我在我的一个项目中实施过。我认为有两个主要原因:

  1. 实现上传块的多线程/多连接。您可以同时上传多个块。
  2. 如果任何一个块无法上传(取决于服务器响应),则停止/恢复上传剩余的块