<! DOCTYPE HTML > < HTML Ланг = "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 (); вернуться к ложным ; }); }) уаг BYTES_PER_CHUNK = 1. * 1024 * 1024 ; // . для каждого размера кусок файла как 1Мб Var ломтиков; Var totalSlices; // отправить запрос функции SendRequest () { уаг BLOB = document.getElementById ( " Файл " ) .files [ 0 ]; вар Start = 0 ; вар End; вар индекс = 0 ; // 计算文件切片总数 ломтиков = Math.ceil (blob.size / BYTES_PER_CHUNK); totalSlices = ломтики; в то время (начало < blob.size) { конец = начать + BYTES_PER_CHUNK; если (конец > blob.size) { конец = blob.size; } UploadFile (блоб, индекс, начало, конец); начать = конец; индекс ++ ; если (индекс > = totalSlices) расположение = " reboot.htm " ; } } // 上传文件 функция uploadFile (блоб, индекс, начало, конец) { вар XHR; вар FD; вар кусок; вар sliceIndex = blob.name + индекс; Кусок = blob.slice (начало, конец); // 切割文件 FD = новый FormData (); fd.append ( " UpgradeFileName " , порция, sliceIndex); вар XHR = новый новый XMLHttpRequest (); xhr.open ( ' СТОЛБ ' , ' http://192.168.10.134:8080/Training/UploadVideo ' , ложь ); // ложь относится к синхронной загрузке, потому что моя маленькая память сервера, выберите синхронизацию, если стремление к скорости, вы можете выбрать // TŪRE, асинхронная загрузка xhr.send (FD); IF ((xhr.status > = 200 && xhr.status < 300 ) || xhr.status == 304 ) { SetTimeout ( "" , 10 ); } Иначе { uploadFile (блоб, индекс, начало, конец); } } </ Скрипт > </ тело > </ HTML >
/// <Summary> /// файл слияния /// </ Summary> /// <парам имя = "Файлы"> Файлы </ PARAM> /// <парам имя = "FULLNAME"> путь хранения </ Param> общественных статические недействительный FileMerge (список < Строка > файлы, строковые FULLNAME) { IF ((files.Count>! 0 )) { вбрасывание новый новый Exception ( " список файлов пуст " ); } Еогеасп ( строка элемент в файлах) { Если (! File.Exists (пункт)) { бросить новый Exception ( строка .Format ( " 文件{0}不存在" , пункт)); } } Байт [] буфер = новый байт [ 1024 * 100 ]; используя (FileStream outStream = новый FileStream (FULLNAME, FileMode.Create)) { INT readedLen = 0 ; FileStream srcStream = NULL ; для (Int я = 0 ; г <files.Count; я ++ ) { srcStream = новый FileStream (файлы [я], FileMode.Open); в то время как ((readedLen = srcStream.Read (буфер, 0 , buffer.Length))> 0 ) { outStream.Write (буфер, 0 , readedLen); } SrcStream.Close (); } } }