Javascript 将字节[]附加到c中的字符串#
我的javascript代码向C#中的处理程序发送数据块。我的Javascript代码运行良好,我已经尝试从客户端(Javascript)接收数据并将其传递给C#handler,并将其保存在本地文件夹中 现在,我不想将数据保存在文件夹中,而是将其保存在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:
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的内容来完成此任务。