Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字节[]附加到c中的字符串#_Javascript_C#_Append_Handle - Fatal编程技术网

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

Javascript 将字节[]附加到c中的字符串#,javascript,c#,append,handle,Javascript,C#,Append,Handle,我的javascript代码向C#中的处理程序发送数据块。我的Javascript代码运行良好,我已经尝试从客户端(Javascript)接收数据并将其传递给C#handler,并将其保存在本地文件夹中 现在,我不想将数据保存在文件夹中,而是将其保存在字符串中 我的处理程序每次都以字节[]的形式获取我的一段信息 我的Javascript: xhr = new XMLHttpRequest(); // this is not the complete code // I slice my fil

我的javascript代码向C#中的处理程序发送数据块。我的Javascript代码运行良好,我已经尝试从客户端(Javascript)接收数据并将其传递给C#handler,并将其保存在本地文件夹中

现在,我不想将数据保存在文件夹中,而是将其保存在
字符串中

我的处理程序每次都以
字节[]
的形式获取我的一段信息

我的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处理程序:在这里,
boolok
永远不会设置为
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;
    }
}

没有采用字节数组的
StringBuilder.Append
重载,因此它将调用
StringBuilder.Append(object)
方法。这将调用字节数组上的
ToString
,以获取字符串值,从而生成字符串
“System.byte[]”

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

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

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

查看编码。Getstring:根据编码,字节数组的长度和字符串的长度可能不同。最好将其转换为base64表示形式。您可以使用Convert.ToBase64String-和Convert.FromBase64String-。在javascript中,这将是btoa()和atob()。文件中是什么?它是文本还是二进制数据。如果要在服务器端将其累积为字符串,则意味着它是文本。如果它是文本,那么为什么不在JavaScript端将其作为文本使用呢?此外,如果您要在多个请求中发送数据,则需要在服务器端将数据累积到跨多个请求持久化的内容中。您可以使用类似Session的内容来完成此任务。