A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

6.2.2 创建媒资服务工程
媒资管理的相关功能单独在媒资服务中开发,下边创建媒资服务工程(xc-service-manage-media)。 媒资服务的配置与cms类似,导入 “资料”--》xc-service-manage-media工程,工程结构如下:

6.3上传文件
6.3.1 断点续传解决方案
通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大 小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了,电断了没 有上传完成,需要客户重新上传,这是致命的,所以对于大文件上传的要求最基本的是断点续传。
什么是断点续传:

引用百度百科:断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个 部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传 下载未完成的部分,而没有必要从头开始上传下载,断点续传可以提高节省操作时间,提高用户体验性。
如下图:


上传流程如下:
1、上传前先把文件分成块 2、一块一块的上传,上传中断后重新上传,已上传的分块则不用再上传
3、各分块上传完成最后合并文件  
文件下载则同理。
  6.3.2 文件分块与合并
为了更好的理解文件分块上传的原理,下边用java代码测试文件的分块与合并。 6.3.2.1文件分块
文件分块的流程如下:
1、获取源文件长度
2、根据设定的分块文件的大小计算出块数 3、从源文件读数据依次向每一个块文件写数据。

[AppleScript] 纯文本查看 复制代码
 //测试文件分块方法   
  @Test
     public void testChunk() throws IOException {    
     File sourceFile = new File("F:/develop/ffmpeg/lucene.mp4"); //  
      File sourceFile = new File("d:/logo.png");   
      String chunkPath = "F:/develop/ffmpeg/chunk/";    
     File chunkFolder = new File(chunkPath);    
     if(!chunkFolder.exists()){
            chunkFolder.mkdirs();
 }     
    //分块大小 
        long chunkSize = 1024*1024*1;   
      //分块数量      
   long chunkNum = (long) Math.ceil(sourceFile.length() * 1.0 / chunkSize );   
      if(chunkNum<=0){       
      chunkNum = 1;    
     }     
    //缓冲区大小  
       byte[] b = new byte[1024];   
      //使用RandomAccessFile访问文件  
       RandomAccessFile raf_read = new RandomAccessFile(sourceFile, "r");   
      //分块        
 for(int i=0;i<chunkNum;i++){   
          //创建分块文件      
       File file = new File(chunkPath+i);   
          boolean newFile = file.createNewFile();  
           if(newFile){    
             //向分块文件中写数据    
             RandomAccessFile raf_write = new RandomAccessFile(file, "rw");           
      int len = ‐1;           
      while((len = raf_read.read(b))!=‐1){        
             raf_write.write(b,0,len);     
                if(file.length()>chunkSize){         
                break;         
            }      
           }      
           raf_write.close();    
         }      
     }       
  raf_read.close();   
    }




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马