2017-10-13 23 views
0

我試圖使用JavaScript將pdf和圖像文件轉換爲base 64,並將其轉換回使用C#在WEB API中的文件。使用JavaScript將文件轉換爲Base 64並將其轉換回使用C#的文件

的Javascript

var filesSelected = document.getElementById("inputFileToLoad").files; 
if (filesSelected.length > 0) 
{ 
    var fileToLoad = filesSelected[0]; 
    var fileReader = new FileReader(); 
    fileReader.onload = function(fileLoadedEvent) 
    { 
     var textAreaFileContents = document.getElementById("textAreaFileContents"); 
     textAreaFileContents.innerHTML = fileLoadedEvent.target.result; 
    }; 
    fileReader.readAsDataURL(fileToLoad); 
} 

C#

Byte[] bytes = Convert.FromBase64String(dd[0].Image_base64Url); 
File.WriteAllBytes(actualSavePath,bytes); 

但在API我發現了異常,因爲{"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. "}

請告訴我如何用這個進行... 感謝

+0

你發佈的api是什麼?它應該是'fileReader.result' – Niladri

+0

是的,我發佈fileReader.result ... – Hem

+0

你可以發佈控制器API的動作?什麼值發佈爲'dd [0] .Image_base64Url' – Niladri

回答

0

根據MDN: FileReader.readAsDataURL那些生成的網址前綴爲data:image/jpeg;base64,。看看你生成的字符串。查找base64,的發生次數,並獲取以此前綴開頭的base64數據。

+0

刪除數據:image/jpeg; base64,工作。如果有人面臨同樣的問題,請使用此腳本從URL中刪除前綴... var base64result = reader.result.split(',')[1]; – Hem

+0

雖然試圖上傳更大的文件在5MB說,腳本運行時沒有將文件轉換爲字節..結果在空錯誤的API ...任何修復此? – Hem

+0

@Hem我已經使用MDN實時結果將11mb圖像轉換爲base64字符串,從firefox中提取生成的url,將數據轉儲到文件中,在C#中讀取此文件以解碼base64數據並寫出圖片。這樣可行。所以它可能是一個瀏覽器依賴設置或插件或類似的東西。你是什​​麼意思「運行而不轉換」? load事件是否被觸發? 'FileReader'還有一個'progress'和一個'error'事件... – Michael

相關問題