使用JavaScript将文件从转换为Base 64,并使用C将其转换回文件#
我正在尝试使用javascript将pdf和图像文件转换为Base64,并使用WebAPI中的C#将其转换回文件 Javascript使用JavaScript将文件从转换为Base 64,并使用C将其转换回文件#,javascript,c#,asp.net-web-api,Javascript,C#,Asp.net Web Api,我正在尝试使用javascript将pdf和图像文件转换为Base64,并使用WebAPI中的C#将其转换回文件 Javascript var filesSelected = document.getElementById("inputFileToLoad").files; if (filesSelected.length > 0) { var fileToLoad = filesSelected[0]; var fileReader = new FileReader();
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#
但在API中,我得到的异常是{“输入不是有效的Base-64字符串,因为它包含一个非Base-64字符、两个以上的填充字符或填充字符中的一个非法字符。”}
请告诉我如何继续这个。。。
感谢根据这些生成的URL,其前缀类似于
数据:image/jpeg;base64,
。查看生成的字符串。查找出现的base64,
并获取在该前缀之后开始的base64数据。因为FileReader.readAsDataURL()
生成一个以额外元数据作为前缀的字符串(“URL”部分),您需要在C端将其去掉。下面是一些示例代码:
// Sample string from FileReader.readAsDataURL()
var base64 = "data:image/jpeg;base64,ba9867b6a86ba86b6a6ab6abaa====";
// Some known piece of information that will be in the above string
const string identifier = ";base64,";
// Find where it exists in the input string
var dataIndex = base64.IndexOf(identifier);
// Take the portion after this identifier; that's the real base-64 portion
var cleaned = base64.Substring(dataIndex + identifier.Length);
// Get the bytes
var bytes = Convert.FromBase64String(cleaned);
如果太冗长,你可以把它浓缩下来,我只是想一步一步地解释
var bytes = Convert.FromBase64String(base64.Substring(base64.IndexOf(";base64,") + 8));
你发布的api是什么?它应该是
fileReader.result
是的,我正在发布fileReader.result…您可以发布控制器api操作吗?发布为dd[0]的值是多少。Image\u base64Url
删除数据:Image/jpeg;base64,成功了。如果有人面临同样的问题,请使用此脚本从URL中删除前缀。。。var base64result=reader.result.split(',')[1];当试图上传更大的文件(比如5MB)时,脚本运行时没有将文件转换为字节..导致API中出现空错误。。。对此有任何修复吗???@Hem我已经使用MDN live结果将11mb的图像转换为base64字符串,从firefox中提取生成的url,将数据转储到文件中,用C#读取此文件以解码base64数据并写出图像。这很有效。因此,它可能是一个依赖于浏览器的设置或一个插件或类似的东西。“不转换运行”是什么意思?加载事件是否已触发?FileReader
还有一个progress
和一个error
事件。。。
var bytes = Convert.FromBase64String(base64.Substring(base64.IndexOf(";base64,") + 8));