我的javascript代码将数据blob发送到C#中的处理程序。我的Javascript代码工作正常,我已经尝试从客户端(javascript)接收数据并将它们传递给C#处理程序并将它们保存在本地文件夹中。
我希望现在将其保存在string
中,而不是将数据保存在文件夹中
我的处理程序每次都以byte[]
的形式获取我的信息。
我的Javascript:
xhr = new XMLHttpRequest();
// this is not the complete code
// I slice my file and push them in var blobs = [];
blobs.push(file.slice(start, end));
while (blob = blobs.shift()) {
xhr.send(blob);
count++;
}
我的C#处理程序:在此处,bool ok
永远不会设置为true
。
当我从javascript发送它们时,如何通过chunk获取所有文件块;而不是保存在文件夹中,而是将其保存在字符串中?
public void ProcessRequest(HttpContext context)
{
try
{
byte[] buffer = new byte[context.Request.ContentLength];
context.Request.InputStream.Read(buffer, 0, context.Request.ContentLength);
string fileSize = context.Request.Headers.Get("X_FILE_SIZE");
bool ok = false;
System.Text.StringBuilder myData = new System.Text.StringBuilder();
myData.Append(buffer);
if(myData.Length == int.Parse(fileSize)){ ok=true; }
}
catch (Exception)
{
throw;
}
}
答案 0 :(得分:0)
StringBuilder.Append
没有带有字节数组的重载,所以它会调用StringBuilder.Append(object)
方法。这将调用字节数组上的ToString
来获取字符串值,从而产生字符串"System.Byte[]"
。
要将字节数组作为字符串,您需要知道字节代表什么。例如,如果字节是编码为UTF-8的文本,那么您可以使用Encoding.UTF8
类对其进行解码:
myData.Append(Encoding.UTF8.GetString(buffer));
请注意,像UTF-8这样的多字节编码可能将一个字符表示为多个字节,因此字符串长度可能与字节数组长度不同。