在ColdFusion中保存二进制数据

在ColdFusion中保存二进制数据,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我在将文件的二进制表示形式保存到文件时遇到问题。。。 让我告诉你我的痛苦: 一切都从一个文件开始,file.pdf 然后,通过POST将该文件发送到一个包含一些附加数据的网站: curl --data "sector=4&name=John&surname=Smith&email=john@smith.com&isocode=PL&theFile=$(cat file.pdf | base64)" http://localhost/awesomeUploa

我在将文件的二进制表示形式保存到文件时遇到问题。。。 让我告诉你我的痛苦:

一切都从一个文件开始,file.pdf 然后,通过POST将该文件发送到一个包含一些附加数据的网站:

curl --data "sector=4&name=John&surname=Smith&email=john@smith.com&isocode=PL&theFile=$(cat file.pdf | base64)" http://localhost/awesomeUpload
然后接收并解码数据:

var decoded = BinaryDecode(data.theFile, "Base64");
然后我尝试通过以下方式保存它:

var theFilePath = ExpandPath("/localserver/temp/theFile.pdf");
fileWrite(theFilePath , data.theFile);
或:

var file_output_steam = CreateObject("java","java.io.FileOutputStream").init(theFilePath);
    file_output_steam.write(data.theFile);
    file_output_steam.close();
我的文件不匹配;(

原来的那个看起来像

%PDF-1.5
%µµµµ
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(pl-PL) /StructTreeRoot 13 0 R/MarkInfo<</Marked true>>>>
endobj
2 0 obj
<</Type/Pages/Count 1/Kids[ 3 0 R] >>
endobj
3 0 obj
<</Type/Page/Parent 2 0 R/Resources<</Font<</F1 5 0 R/F2 10 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 595.32 841.92] /Contents 4 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>>
%PDF-1.5
%µµµµ
10 obj
endobj
20 obj
endobj
30 obj
其中,经过ColdFusion的副本如下所示:

%PDF-1.5
%µµµµ
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(pl-PL) /StructTreeRoot 13 0 R/MarkInfo<</Marked true>> B™[™ŘšBŚŘšBŹŐ\KÔYŮ\ËĐŰÝ[ťKŇÚYÖČČ—H€Đ¦VćFö& ĐŁ2ö& ĐŁĂÂőG—RővRő&VçB""ő&W6÷W&6W3ĂÂôföçCĂÂôcR"ôc"#ŕ˝AÉ˝ŤM•Ńl˝A˝Q•áĐ˝%µ…ť•˝%µ…ť•˝%µ…ť•%t€>/MediaBox[ 0 0 595.32 841.92] /Contents 4 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>B™[™ŘšBŤŘšBŹŃš[\‹Ń›]QXŰŮKÓ[™ÝMŚOŹBśÝ™X[CBž'cłB°Ś!8Ě1Ď]CsôŘQ&‰2  PäV˝ëËöĽ¨QŰge•ź
ďÂŃ,đť@"aKR•˘<1™[ä¸
(ÄňĄyoâ9S\Śĺ <ę8I±D¬‰#…Ć”ťLé‘ا÷ÍnU|WŸ‰t`ýuşąĽ\hlu&âĂ7ß
ů"Ĺ\Ŕ>pÇč÷÷.°ß’Ř——•‹ĚB™[™Ý™X[CB™[™ŘšBŤHŘšBŹŐ\Kћ۝ÔÝXť\KŐ\LĐ\ŮQ›ŰťĐPŃQJĐŘ[XśšKŃ[ŰŮ[™ËŇY[ť]KRŃ\ŘŮ[™[ť›ŰťČ
‹ŐŐ[šXŰŮHŚŹŹB™[™ŘšBŤŘšB–Č
Č—HB™[™ŘšBŤČŘšBŹĐ\ŮQ›ŰťĐPŃQJĐŘ[XśšKÔÝXť\KĐŇQ›Űť\L‹Ő\Kћ۝ĐŇQŃŇQX\ŇY[ť]KŃČLĐŇQŢ\Ý[R[™›Č‹Ń›Űť\ŘÜš\ÜH‹ŐČŚŕЦVćFö& ĐŁ‚ö& ĐŁĂÂô÷&FW&–ćr„–FVçF—G’’ő&Vv—7G'’„Fö&R’ő7WĆVÖVçBăŕЦVćFö& ĐŁ’ö& ĐŁĂÂőG—RôföçDFW67&—F÷"ôföçDć
%PDF-1.5
%µµµµ
10 obj
B™[™ŘŤŘŤŹŃš[\èŃ›]QXŮKÓ[™ÝMŚOŹBś™X[CBž'cłBŚ!8Ě1Ď]CsŘQ&2 PžVſo203;Ľ¨QŰge•

ďŃ,đť@“aKR•˘而不是
filewrite()
,您是否尝试过使用
直接提供它并查看它是否有效?它是一个输出标记,我想写入文件。在我看来,这更像是一个纯Java问题,当我使用sun.misc.base64解码器时,副本更接近原始版本,但文件已损坏。