简体   繁体   English

在将pdf作为base64字符串转换为字节数组时,输入不是有效的Base-64字符串

[英]The input is not a valid Base-64 string on converting a pdf as base64 string to byte array

After converting a pdf file using Cordova Plugin FileReader and send it to a .Net server, the server throws this error "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." 使用Cordova Plugin FileReader转换pdf文件并将其发送到.Net服务器后,服务器会引发以下错误:“输入不是有效的Base-64字符串,因为它包含非Base 64字符,两个以上的填充字符,或填充字符中的非法字符。” on converting the base64 string to byte array. 关于将base64字符串转换为字节数组。

Java Script Code: Java脚本代码:

window.resolveLocalFileSystemURL(data, 
function (fileEntry) {
    fileEntry.file(function (fileObj) {
        var reader = new FileReader();
        reader.onloadend = function (evt) {             
            base64StringDocument = evt.target.result;
        };
        reader.readAsDataURL(fileObj);    
    },
    function (error) {
        console.log('get fileEntry error: ' + error.message);
    });
},
function (error) {
  console.log('resolve error: ' + error.message);
});

C# Code: C#代码:

int startIndexOfBase64 = base64String.IndexOf("base64,") + "base64,".Length;
base64String = base64String.Substring(startIndexOfBase64);

byte[] blob = Convert.FromBase64String(base64String);

Base64 string start: Base64字符串开始:

data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UKL1BhcmVudCAyIDAgUgovUmVzb3VyY2VzIDQgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCi9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKNCAwIG9iago8PCAvUHJvY1NldCBbL1BERiAvSW 数据:应用/ PDF; BASE64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UKL1BhcmVudCAyIDAgUgovUmVzb3VyY2VzIDQgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCi9Db250ZW50cyA1IDAgUgo + PgplbmRvYmoKNCAwIG9iago8PCAvUHJvY1NldCBbL1BERiAvSW

Base64 string end: Base64字符串结尾:

wMDIyOTI1NiAwMDAwMCBuDQowMDAwMjI5MzYxIDAwMDAwIG4NCjAwMDAyMjk0MzMgMDAwMDAgbg0KMDAwMDIyOTU5MiAwMDAwMCBuDQowMDAwNDU1MDkwIDAwMDAwIG4NCnRyYWlsZXIKPDwgL1NpemUgMTMKL1Jvb3QgMSAwIFIKPj4Kc3RhcnR4cmVmCjQ1NTE3NwolJUVPRg== wMDIyOTI1NiAwMDAwMCBuDQowMDAwMjI5MzYxIDAwMDAwIG4NCjAwMDAyMjk0MzMgMDAwMDAgbg0KMDAwMDIyOTU5MiAwMDAwMCBuDQowMDAwNDU1MDkwIDAwMDAwIG4NCnRyYWlsZXIKPDwgL1NpemUgMTMKL1Jvb3QgMSAwIFIKPj4Kc3RhcnR4cmVmCjQ1NTE3NwolJUVPRg ==

Thanks alot for the comments, but applying the below regular expression over the base64 solved the issue. 非常感谢您的评论,但是将以下正则表达式应用于base64可以解决此问题。

window.resolveLocalFileSystemURL(data, 
function (fileEntry) {
    fileEntry.file(function (fileObj) {
        var reader = new FileReader();
        reader.onloadend = function (evt) {            
            base64StringDocument = evt.target.result.match(/,(.*)$/)[1];
        };
        reader.readAsDataURL(fileObj);    
    },
    function (error) {
        console.log('get fileEntry error: ' + error.message);
    });
},
function (error) {
  console.log('resolve error: ' + error.message);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM