man*_*608 6 javascript c# ajax asp.net-mvc html5
我正在使用ajax javascript从客户端上传文件,我在块中和服务器中分割,当收到所有块时我加入它们.但问题是即使原始文件和上传的文件大小相同但两者都不同.我的意思是gif文件,当我查看它与视频files.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);
Run Code Online (Sandbox Code Playgroud)
服务器端代码加入
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);
}
Run Code Online (Sandbox Code Playgroud)
在服务器中保存拆分文件
// 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();
}
Run Code Online (Sandbox Code Playgroud)
Blob 具有一些与浏览器版本相关的行为,如Mozilla 开发人员网络:Blob中所述。另外,这就是它在 IE切片方法中的实现方式。
这意味着在较新的浏览器中,切片的第二个参数不是长度,而是结束位置。
看看这个问题html5 chunk and webworker does not upload everything,这应该会有所帮助。
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |