将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()