代码之家  ›  专栏  ›  技术社区  ›  Patrick

coldfusion中的Base64解码错误

  •  1
  • Patrick  · 技术社区  · 7 年前

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

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

    我原本以为空格是个问题,但我做了一个替换,用“”替换了所有的“”,它们仍然在那里。还有什么我应该做的吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Randy Johnson    7 年前

    在我的测试中,我可以获取一个本地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>
    

    更新代码:

    <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>
    
        2
  •  1
  •   Dave L    4 年前

    <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>