coldfusion中的Base64解码错误

coldfusion中的Base64解码错误,coldfusion,Coldfusion,我试图用#ToString(ToBinary(stringToDecode))#解码base64字符串,coldfusion给出一个错误,指出参数必须是base-64编码的字符串。字符串来自第三方,应该是pdf文件。以下是其中的一部分: JVBERi0xLjUKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmplY3QvUmVzb3VyY2VzPDw+Pi9TdWJ0 eXBlL0Zvcm0vQkJveFswIDAgMTUuNDQgMTUuNDZdL01hdHJpeCBbMS

我试图用
#ToString(ToBinary(stringToDecode))#
解码base64字符串,coldfusion给出一个错误,指出参数必须是base-64编码的字符串。字符串来自第三方,应该是pdf文件。以下是其中的一部分:

JVBERi0xLjUKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmplY3QvUmVzb3VyY2VzPDw+Pi9TdWJ0 eXBlL0Zvcm0vQkJveFswIDAgMTUuNDQgMTUuNDZdL01hdHJpeCBbMSAwIDAgMSAwIDBdL0xlbmd0 aCAyMi9Gb3JtVHlwZSAxL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCk9lHxbaEDXZpIO1A/Gj mGuxQdW3qkgKZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8L1R5cGUvWE9iamVjdC9SZXNvdXJj ZXM8PD4+L1N1YnR5cGUvRm9ybS9CQm94WzAgMCAxNS40NCAxNS4xOV0vTWF0cml4IFsxIDAgMCAx IDAgMF0vTGVuZ3RoIDIyL0Zvcm1UeXBlIDEvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0KtDN8 NkUKYx04Gj8V9LfOboGvN9VRIgplbmRzdHJlYW0KZW5kb2JqCjMgMCBvYmoKPDwvVHlwZS9YT2Jq ZWN0L1Jlc291cmNlczw8Pj4vU3VidHlwZS9Gb3JtL0JCb3hbMCAwIDE1LjQ0IDE1LjcyXS9NYXRy aXggWzEgMCAwIDEgMCAwXS9MZW5ndGggMjIvRm9ybVR5cGUgMS9GaWx0ZXIvRmxhdGVEZWNvZGU+ 

我原以为空格是个问题,但我做了一个替换,用“”替换了所有的“”,它们仍然在那里。我还有别的事要做吗

在我的测试中,我可以获取一个本地pdf并将其转换为字符串,以模拟您从API获得的字符串。然后我可以把它转换成PDF格式

当我使用你放在上面的绳子时,我无法让它工作。不确定是否有您粘贴到此处的列表中的内容

这是我的代码,也许您可以修改它以使用api中的字符串

<cffile action="readbinary" file="#expandPath('./test.pdf')#" variable="thefile"/>

<cfset the_string = toString(theFile)/>

<cfscript>
patrick_string = ToBase64("JVBERi0xLjUKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmplY3QvUmVzb3VyY2VzPDw+Pi9TdWJ0 eXBlL0Zvcm0vQkJveFswIDAgMTUuNDQgMTUuNDZdL01hdHJpeCBbMSAwIDAgMSAwIDBdL0xlbmd0 aCAyMi9Gb3JtVHlwZSAxL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCk9lHxbaEDXZpIO1A/Gj mGuxQdW3qkgKZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8L1R5cGUvWE9iamVjdC9SZXNvdXJj ZXM8PD4+L1N1YnR5cGUvRm9ybS9CQm94WzAgMCAxNS40NCAxNS4xOV0vTWF0cml4IFsxIDAgMCAx IDAgMF0vTGVuZ3RoIDIyL0Zvcm1UeXBlIDEvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0KtDN8 NkUKYx04Gj8V9LfOboGvN9VRIgplbmRzdHJlYW0KZW5kb2JqCjMgMCBvYmoKPDwvVHlwZS9YT2Jq ZWN0L1Jlc291cmNlczw8Pj4vU3VidHlwZS9Gb3JtL0JCb3hbMCAwIDE1LjQ0IDE1LjcyXS9NYXRy aXggWzEgMCAwIDEgMCAwXS9MZW5ndGggMjIvRm9ybVR5cGUgMS9GaWx0ZXIvRmxhdGVEZWNvZGU+");

string2 = toBinary(ToBase64(the_string));

binencode=BinaryEncode(string2, "Base64"); 

</cfscript>


<cffile action="write" file="#expandPath('./randy.pdf')#" output="#thefile#" addnewline="No" />

<a href="randy.pdf">click</a>

patrick_string=ToBase64("2.在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国YNR5CGUVRM9YBS9CQM94WZAGMCAXN4.一种新的非政府非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门的非政府的非政府部门的非政府部门的非政府部门的非政府部门的非政府部门,非政府部门的非政府部门的非政府部门的非政府部门的非政府部门,非政府部门的非政府部门的非政府部门的非政府部门,非政府部门的非政府部门的非政府部门的非政府部门,非政府部门非政府非政府非政府非政府部门非政府非政府非政府的非政府非政府非政府非政府非政府非政府非政府非政府非政府非政府非政府非政府非政府非政府非政府非zWnVzGu+”;
string2=toBinary(ToBase64(_字符串));
binencode=二进制编码(string2,“Base64”);
更新代码:

<cffile action="readbinary" file="#expandPath('./test.pdf')#" variable="thefile"/>

<cfset the_string = toBase64(theFile)/>

<cfscript>

string2 = toBinary(the_string);

</cfscript>


<cffile action="write" file="#expandPath('./randy.pdf')#" output="#string2#" addnewline="No" />

<a href="randy.pdf">click</a>

string2=toBinary(_字符串);

这里有一个更新的cfscript方法,以防有人感兴趣:

<cfscript>
// read the binary file and save it as a variable
myPdf = fileReadBinary( expandPath( "/test.pdf" ) );

// encode as base64
myPdf = toBase64( myPdf );

// output the base64 version to the browser
writedump( myPdf );

// convert back to binary
myPdf = toBinary( myPdf );

// write to a new PDF file
fileWrite( expandPath( "/new.pdf" ), myPdf );
</cfscript>

//读取二进制文件并将其另存为变量
myPdf=fileReadBinary(expandPath(“/test.pdf”);
//编码为base64
myPdf=toBase64(myPdf);
//将base64版本输出到浏览器
书面文件(myPdf);
//转换回二进制
myPdf=托比纳里(myPdf);
//写入新的PDF文件
文件写入(expandPath(“/new.pdf”)、myPdf;

@haxtbh我试图关闭它,因为它太宽了;之前我不知道编码,现在我知道它是base64。你看了这一页了吗?在上面的例子中,你似乎在尝试将字符串转换为二进制,然后再转换回字符串。@RandyJohnson这告诉我输入和输出字符串不一样。我想过去e整个字符串,以便您完全复制我的问题,但它太大,无法放入我的问题(如果我将其粘贴到问题编辑器中,我的浏览器将冻结)有一个存储库我可以把它放进去吗?你应该能够修改我的代码,看看你是否能让它工作。注释掉cffile并做一个测试,它应该为你运行。更好的办法可能是将字符串保存到一个文件中,并在测试时读取cffile,这样你的代码文件中就不会有300kb的文本。我认为你的代码中有一个错误,变量#thefile#被读取,然后放入另一个pdf,字符串结果不会写入文件。将pdf放入字符串以模拟api输出。这两行将其转换回pdf string2=toBinary(ToBase64(the#string));binencode=BinaryEncode(string2,“Base64”);