当前位置: 首页 > 知识库问答 >
问题:

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

何正德
2023-03-14

在使用Cordova Plugin FileReader转换pdf文件并将其发送到.Net服务器后,服务器在将base64字符串转换为字节数组时抛出错误“输入不是有效的Base-64字符串,因为它包含非base64字符、两个以上的填充字符或填充字符中的非法字符。”。

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#代码:

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

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

Base64字符串开头:

data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UKL1BhcmVudCAyIDAgUgovUmVzb3VyY2VzIDQgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCi9Db250ZW50cyA1IDAgUgo PgplbmRvYmoKNCAwIG9iago8PCAvUHJvY1NldCBbL1BERiAvSW

Base64字符串结尾:

wmdiyoti 1 niawmdawmbudwqowmdawmji 5 mzyxidawmdaw4g ncjawmdaymjk 0 zmgmdawmdabg 0 mdawmdiyotu 5 miawmdawmcbudwqowmdawndu 1 mdkwidawmdawig 4 ncnryywlszxikpdwgl 1 npemugmtmkl 1j VB 3 qgmsawifikpj 4 C3 rhcnr 4 cmvmcjq 1 nte3 nwoljuvprg = =

共有1个答案

鲁鹏
2023-03-14

非常感谢您的评论,但是在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);
});
 类似资料:
  • 我有一个REST服务,它读取一个文件,并在将其转换为字节数组后将其发送到另一个控制台应用程序,然后将其转换为Base64字符串。这部分有效,但是当应用程序接收到相同的流时,它会被操纵,不再是有效的Base64字符串。一些垃圾字符被引入到流中。 将流转换回Byte时收到的异常为 输入不是有效的Base-64字符串,因为它包含非基64字符、两个以上的填充字符或填充字符中的非空白字符 服务时: 在申请时

  • 我想通过JavaScript将“base64”字符串转换为字节数组。 我收到来自URL的字符串。 我想把字符串转换成字节数组。因为我需要这个字节数组来发送Rest APIendpoint。rest API content-type=application/octet-stream。

  • 问题内容: 我想使用JSON发送大字节数组启发了我,为了减少开销,我想使用base128编码(实际上可以产生有效的json字符串)。但不幸的是,我无法找到一些在JS中进行转换的过程。我将发布过程作为对此问题的答案,但是可能是某人的过程更短,或者可能是在JSON中有效发送二进制数据的更好的主意。 问题答案: ES6: 编码 解码 我在这里嵌入功能-这里。这里的掩盖思想是将字节数组转换为位数组,然后将

  • 当我们调用时,它会抛出一个异常,说明。我能做什么?

  • 问题内容: 我有以下代码,我试图通过测试,但似乎无法理解Java世界中各种编码形式。 我想我的问题是:将任意字节的字节数组转换为Java字符串,然后将同一Java String转换为另一个字节数组的正确方法是什么,该字节数组将具有与原始字节相同的长度和相同的内容数组? 问题答案: 尝试特定的编码: ideone链接

  • 问题内容: 我有一个要加密的字节数组,然后转换为字符串,以便可以传输。当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密。我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使用诸如str.getBytes()之类的东西将其转换为字节数组时,它与我的原始字节数组不匹配。 示例输出: 任何想法如何将接收到的字符串转换为与发送的字节数组匹配的字节数组? 谢谢 问题答案: