在JavaScript 中,您可能會遇到需要轉換Blob 物件的情況,該物件通常表示映像或文件,為Base64 字串。當您需要以文字格式儲存或傳輸二進位資料時,例如透過 HTTP 發送或將其儲存在資料庫中,此轉換是必要的。
您提供的程式碼片段,使用 Blob 和 FileReader API ,旨在執行此轉換。但是,您提到了來源變數傳回 null 的問題。
此問題的解決方案是修改程式碼以正確使用 FileReader。以下是更新後的程式碼:
var reader = new FileReader(); reader.readAsDataURL(blob); reader.onloadend = function() { var base64data = reader.result; console.log(base64data); }
在此程式碼中,readAsDataURL() 方法用於將 Blob 資料編碼為 Base64 字串。然後使用 onloadend 事件處理程序從 reader.result 屬性檢索 base64 編碼的資料。
或者,您可以考慮使用jQuery 進行更簡潔的實作:
$.ajax({ url: "upload.php", // URL to submit the form type: "POST", data: { image: blob }, beforeSend: function(xhr) { // Encode the blob as a base64 string var reader = new FileReader(); reader.readAsDataURL(blob); reader.onloadend = function() { // Append the encoded data to the form data var data = reader.result; xhr.setRequestHeader("Image-Data", data); } } });
請注意,jQuery Ajax 方法將處理程式傳送編碼的Base64 字串以及表單
需要注意的是,Blob 的結果將在 Base64 編碼資料之前包含 Data-URL 聲明,這一點很重要。若要只擷取 Base64 編碼的字串,可以使用以下程式碼:
var base64String = base64data.substring(base64data.indexOf(',') + 1);
以上是如何在 JavaScript 中將 Blob 轉換為 Base64 字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!