動画の一部のアップロード+ C#の組み合わせのバックエンド

<!DOCTYPE HTML > 
< HTML LANG = "EN" > 
< > 
    < メタ文字コード= "UTF-8" > 
    < タイトル>ドキュメント</ タイトル> 
</ ヘッド> 
< 身体>   
    <! - 2.创建页面元素- >   
    < DIV ID = "アップロード" >   
        < 入力のid = "ファイル" タイプ= "ファイル" = "ファイル"  /> 
        <タイプ= "ボタン" >提交2 </ ボタン> 
    </ divの>   
    < スクリプトタイプ= "テキスト/ javascriptの" SRC = "JS / jqueryの-3.4.1.min.js" > </ スクリプト> 
    < スクリプトタイプ=」テキスト/ javascriptの」SRC = "JS / jqueryの-form.js" > </ スクリプト> 
    < スクリプトタイプ= "テキスト/ javascriptの" > 
        $(関数(){ 
            $(" #btnButton " )。(クリック機能を(){ 
                のsendRequestを();
                戻り falseに; 
            }); 
        })
        
        VaRのBYTES_PER_CHUNK = 1。 *  1024  *  1024 ; // 各スライスファイルサイズに対して1メガバイトとして。
        VaRのスライス、
         VaRのtotalSlices; 

        // 要求送信
        機能のsendRequestを(){
             VARのBLOBは= のdocument.getElementById(" ファイル" ).files [ 0 ];
             VAR スタート=  0 ;
             VARの終了;
            VaRのインデックス=  0 ; 


            // 计算文件切片总数
            スライス= Math.ceil(blob.size / BYTES_PER_CHUNK)。
            totalSlices = スライス。
            しながら(開始< blob.size){ 
            端は= 起動+ BYTES_PER_CHUNKと、
            もし(エンド> blob.size){ = blob.size。
            } 
            uploadFile(BLOB、インデックス、開始、終了)。
            開始= 終了し; 
            インデックス++ ;
            もし(指数> = totalSlices)
                位置= " reboot.htm " 
            } 
        } 

        // 上传文件
        関数uploadFile(BLOB、インデックス、開始、終了){
             VARのXHR。
            VAR FD;
            VaRの塊。  
            VAR sliceIndex = blob.name + インデックス。
            チャンク= blob.slice(開始、終了)。// 切割文件
            FD =  いるFormData();
            fd.append(" UpgradeFileName " 、チャンク、sliceIndex);
             VARのXHR =  新新のXMLHttpRequest(); 
            xhr.open(' POST ' ' http://192.168.10.134:8080/Training/UploadVideo ' falseに); // 偽は、私の小さなサーバのメモリ、選択同期するので、同期アップロードを指し、スピードの追求場合、あなたは//トゥーレ、非同期アップロードを選択することができ
            xhr.send(FD)を、
             IF ((xhr.status > = 200  && xhr.status <  300 || xhr.statusの==  304 ){
                setTimeout("" 10 ); 
            } { 
                uploadFile(BLOB、インデックス、開始、終了)。
            } 
        } 
</ スクリプト> 

</ ボディ>   
</ HTML >
///  <要約> 
        /// ファイルマージ
         ///  </要約> 
        ///  <PARAM NAME = "ファイル"> ファイル</ param>の
        ///  <PARAM NAME = "のfullName"> ストレージ・パス</ param>の
        公共の 静的な 無効 FileMerge(リスト< 文字列 >ファイル、文字列のfullName)
        { 
            IF((files.Count>!0 ))
            { 
                スロー 新しい新しい例外(" ファイルリストが空です" );
            } 
            foreachの文字列項目ファイル)
            {
                もし(!File.Exists(アイテム))
                { 
                    スロー 新しい例外を(文字列 .Format(" 文件{0}不存在" 、アイテム)); 
                } 
            } 
            バイト []バッファ= 新しい バイト [ 1024 * 100 ]。
            使用(FileStreamをOUTSTREAM = 新規のFileStream(のfullName、FileMode.Create))
            { 
                int型 readedLen = 0 
                FileStreamをsrcStream = nullを以下のためのint型私= 0 ; 私はfiles.Countを<; 私は++ 
                { 
                    srcStream = 新規のFileStream(ファイル[I]、FileMode.Open)。
                    一方、((readedLen = srcStream.Read(バッファ、0、buffer.Length))> 0 
                    { 
                        outStream.Write(バッファ、0 、readedLen)。
                    } 
                    srcStream.Close()。
                } 
            } 
        }

 

おすすめ

転載: www.cnblogs.com/Mzg121584668/p/10955166.html
おすすめ