将web api blob读入一个字符串,我可以将其作为json对象的一部分发送到服务器并转回文件

我正在尝试将wav文件转换为字符串,我可以将其作为json对象的一部分发送到服务器,以便在服务器上我可以将该字符串转换回文件。

我曾尝试使用readAsBinaryString并将其作为文本读取,在将字符串读入字节数组时无法获得过去的错误。

reader.onloadend = saveMedia; reader.readAsText(Blob); //reader.readAsBinaryString(Blob); also tried. 

然后回调发送一个ajax请求,其中一个对象持有“reader.result”中的字符串,并在服务器上我尝试过如下操作:

 System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); byte[] BinaryData = encoding.GetBytes(stringFromRequest); 

下面这个问题的答案似乎是不应该这样做。 但我真的想这样做,因为我使用的另一个工具(微风js)。 不希望对文件数据类型使用单独的post操作。

相关: 文件API – Blob到JSON

找到一种有效的方法:

  var reader = new FileReader(); reader.onloadend = afterRead; reader.readAsBinaryString(blob); function afterRead() { // convert binary string to base64 for a safe transfer to the server. entity.BinaryProp = window.btoa(reader.result); } 

在服务器端:

 string BinaryString = (string)entityInfo.UnmappedValuesMap["BinaryProp"]; byte[] BinaryData = Convert.FromBase64String(BinaryString); 

上面的答案很棒,但有一种更简单的方法。

 var reader = new FileReader(); reader.onloadend = afterRead; reader.readAsDataURL(blob); // Use this function instead function afterRead() { entity.BinaryProp = reader.result; //result is already a base64 string! } 

请参阅此处的文档: FileReader.readAsDataURL()