[英]how to have Web Api send Json.net Serialized string object back to client Correctly?
[英]reading a web api blob into a string that I can send as part of a json object to the server and turn back into a file
我正在嘗試將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);
下面這個問題的答案似乎是不應該這樣做。 但是我真的很想這樣做,因為我正在使用另一種工具(breeze 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);
您可以使用fileReader.readAsDataURL(fileObject)
,此blob編碼為base64,可以通過API安全地上傳到服務器。
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
let thumbnail = reader.result;
console.log(thumbnail)
//send to API
};
上面的答案很好,但是有一個更簡單的方法。
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.