无法拆分文件并发送然后加入服务器
not able to split a file and send and then join in server
我使用ajax javascript从客户端上传文件,我将其分成块,当收到所有块时,我在服务器中加入它们。但问题是,即使原始文件和上传的文件大小相同,但两者都不同。我指的是gif文件,当我查看它与视频文件不同和相同时。客户端代码
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开发者网络:Blob中所述。此外,这也是它在IE切片方法中的实现方式。
这意味着在较新的浏览器中,slice的第二个参数是而不是长度,它是end position。
看看这个问题,html5 chunk和webworker没有上传任何内容,这应该会有所帮助。
相关文章:
- 如何在VB中先执行客户端代码,然后再执行服务器端代码
- Javascript onclick需要点击两次,然后会创建越来越多的服务器请求
- 使用 AJAX 获取 XML,然后将其解析为 JSON(无需服务器)
- 如何检查服务器是否返回未定义然后忽略它
- 在上传之前预览图像,然后以aspmvc上传到服务器
- 在Visual Basic中加密AES,然后在服务器到客户端中解密AES
- 如何截屏网页的一部分,然后用Javascript将其传递给服务器
- 我可以使用jquery和AJAX来调用cgi-bin脚本,然后添加消息事件来处理服务器发送事件吗
- 如何将文本输入保存为变量,然后提交到服务器(ajax 和 javascript)
- 我可以请求一个带有JavaScript的网页,然后将其按原样发送到服务器进行进一步分析吗?
- 使用 JQuery 执行服务器端验证,然后将用户发送到另一个站点
- 在键盘上的select2中按下向下箭头键,然后我必须避免服务器调用
- 当我在 Javascript 中加载相同的声音 n 次时,浏览器会只是从服务器获取声音,然后将其复制到 n 个不同的对象
- 如何先调用客户端脚本函数,然后再调用服务器端按钮单击事件
- 在javascript中使用RSA加密一个小字符串,然后在服务器上用java解密
- 如何将上传的图片附加到表单中,然后发布到服务器
- 无法拆分文件并发送然后加入服务器
- 由服务器初始化然后由客户端运行的时钟已延迟
- JQuery试图打印选中复选框的表的列,然后打印来自web服务器的响应
- 在浏览器中只显示PDF一次,然后将其从C#服务器中删除