在c#中向字符串添加一个byte[]

本文关键字:一个 byte 字符串 添加 | 更新日期: 2023-09-27 18:11:07

我的javascript代码发送数据blobs到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发送文件时,我如何逐块获取所有文件;而不是保存在文件夹中,而是保存在字符串中?

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

在c#中向字符串添加一个byte[]

没有接受字节数组的StringBuilder.Append重载,因此它将调用StringBuilder.Append(object)方法。这将调用字节数组上的ToString来获取字符串值,结果是字符串"System.Byte[]"

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

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

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