无法拆分文件并发送然后加入服务器

我正在使用ajax javascript从客户端上传文件,我在块中和服务器中分割,当收到所有块时我加入它们。 但问题是即使原始文件和上传的文件大小相同但两者都不同。 我的意思是gif文件,当我查看它与videofiles.client侧代码不同和相同

var xhr = new XMLHttpRequest(); var tempBlob = blob; var blobOrFile = tempBlob.slice(fileDataStart, fileDataSent); xhr.open('POST', '/Portfolio/UploadBinaryFiles', false); xhr.setRequestHeader("Cache-Control", "no-cache"); xhr.setRequestHeader("X-File-Name", fileName); xhr.setRequestHeader("X-File-Size", fileSize); xhr.setRequestHeader("X-File-BytesSent", fileDataSent); xhr.setRequestHeader("X-File-SplitCounter", fileSplitCounter); xhr.setRequestHeader("Content-Type", "multipart/form-data"); xhr.send(blobOrFile); 

服务器端代码加入

  FileStream fsSource = new FileStream(FileOutputPath, FileMode.Append); // Loop through all the files with the *.part extension in the folder foreach (FileInfo fiPart in diSource.GetFiles(@"*.part")) { // Create a byte array of the content of the current file Byte[] bytePart = System.IO.File.ReadAllBytes(fiPart.FullName); // Write the bytes to the reconstructed file fsSource.Write(bytePart, 0, bytePart.Length); } 

在服务器中保存拆分文件

 // Read input stream from request byte[] buffer = new byte[Request.InputStream.Length]; int offset = 0; int cnt = 0; while ((cnt = Request.InputStream.Read(buffer, offset, 10)) > 0) { offset += cnt; } // Save file using (FileStream fs = new FileStream(fullNameNoExt, FileMode.Create)) { fs.Write(buffer, 0, buffer.Length); fs.Flush(); } 

Blob具有一些与浏览器版本相关的行为,如Mozilla Developer Network:Blob中所述 。 此外,这是它在IE 切片方法中实现的方式 。

这意味着在较新的浏览器中,切片的第二个参数不是长度 ,它是一个结束位置

看看这个问题html5块和webworker没有上传任何东西 ,这应该certificate是有帮助的。