簡體   English   中英

將Web API Blob讀入一個字符串,我可以將它作為json對象的一部分發送到服務器,然后轉回一個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM