在c#中将字节[]附加到字符串

时间:2015-09-03 15:48:25

标签: javascript c# append handle

我的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;
    }
}

1 个答案:

答案 0 :(得分:0)

StringBuilder.Append没有带有字节数组的重载,所以它会调用StringBuilder.Append(object)方法。这将调用字节数组上的ToString来获取字符串值,从而产生字符串"System.Byte[]"

要将字节数组作为字符串,您需要知道字节代表什么。例如,如果字节是编码为UTF-8的文本,那么您可以使用Encoding.UTF8类对其进行解码:

myData.Append(Encoding.UTF8.GetString(buffer));

请注意,像UTF-8这样的多字节编码可能将一个字符表示为多个字节,因此字符串长度可能与字节数组长度不同。