2017-07-25 128 views
0

我試圖用#ToString(ToBinary(stringToDecode ))#來解碼base64字符串,並且coldfusion提供了一個錯誤,說明該參數必須是base-64編碼的字符串。該字符串來自第三方,應該是一個pdf文件。下面是它的一部分:Coldfusion的base64解碼錯誤

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

果然不出我所想到的是空間是一個問題,但我做了替換「與「」替換所有」,他們仍然在那裏。還有什麼我應該做的?

+0

[ColdFusion中轉換原始PDF數據]的可能的複製(https://stackoverflow.com/questions/45289637/converting-raw-pdf-data-in- Coldfusion) – haxtbh

+0

@haxtbh我試圖把它視爲過於寬泛;之前我不知道編碼,現在我知道它是base64。 –

+0

你有看看這個網頁嗎? https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-a-b/binarydecode.html看起來你在你的例子再次嘗試將字符串轉換爲二進制和回字符串以上。 –

回答

1

在我的測試中,我可以採用本地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> 
+0

我想粘貼整個字符串爲您完全複製我的問題,但它是太大,把我的問題(我的瀏覽器凍結,如果我把它粘貼到問題編輯器)是否有一個倉庫,我可以把它嗎? –

+0

你應該能夠改變我的代碼,看看你是否能得到它的工作。註釋掉cffile並執行,它應該爲您運行。 –

+0

一個更好的主意可能是將字符串保存到文件中,並在測試時進行cffile讀取,以便在代碼文件中沒有300kb的文本。 –