在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;
}
}
没有接受字节数组的StringBuilder.Append
重载,因此它将调用StringBuilder.Append(object)
方法。这将调用字节数组上的ToString
来获取字符串值,结果是字符串"System.Byte[]"
。
要获得字符串形式的字节数组,您需要知道字节表示什么。例如,如果字节是编码为UTF-8的文本,则可以使用Encoding.UTF8
类对其进行解码:
myData.Append(Encoding.UTF8.GetString(buffer));
请注意,像UTF-8这样的多字节编码可以将一个字符表示为多个字节,因此字符串长度可能与字节数组长度不同。