2017-10-13 98 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

相关问题