2

我正在尝试使用 Coldfusion 解密 CSV。CSV 已使用gpg4win加密。我在 CF Admin 中创建了一个计划任务,它检查一个文件夹中的加密文件,如果找到,解密它并将结果作为 CSV 文件存储在另一个文件夹中(然后将其导入数据库)。

这是代码的摘录:

<cfparam name="Variables.InputFolderName" default="inputfolder" />
<cfparam name="Variables.OutputFolderName" default="outputfolder" />
<cfparam name="gKeyPassphrase" default="sampletestkey" />
<cfparam name="gEncryptionKeyID" default="sampletestid" />
<cfset inputFilePath = ExpandPath("/resources/uploads/csv/#Variables.InputFolderName#") />
<cfset outputpath = ExpandPath("/resources/uploads/#Variables.OutputFolderName#") />
<cftry>
    <cfdirectory directory="#inputFilePath#" name="Variables.EncryptedCSVFiles" filter="*.gpg" action="list" >
    <cffile action="read" file="#inputFilePath#\#name#" variable="Variables.EncryptedCSVData" />
    <cfexecute name="C:\Program Files (x86)\GNU\GnuPG\gpg2" arguments="--passphrase=#gKeyPassphrase# --batch -o #inputFilePath# -d -r #gEncryptionKeyID# ouputfile=#outputpath#/test.csv" timeout="300"></cfexecute>
 <cfcatch type="any">
    <!--- I tried emailing a cfdump of the error to myself but it didn't work --->
 </cfcatch>
</cftry>

当我手动运行调度程序时,“此计划任务已成功完成。” 显示在 CF Admin 中,但未创建解密文件,我也没有收到任何错误报告电子邮件。

如果有人能帮助我解决这个问题,我将不胜感激。

谢谢你。

4

1 回答 1

1

(注意:我假设您首先从命令行验证了上述文件设置是否成功。如果没有,请先返回并执行此操作)

如果那是您的实际 CF 代码,则它包含一些语法错误。arguments属性后没有右引号,属性后没有左引号outputfile(这也是拼写错误)。所以 CF 代码应该可以编译,但可能不会产生任何输出文件。尝试修正引号,你应该得到一些输出,即使它只是一个错误:

<cfexecute name="C:\Program Files (x86)\GNU\GnuPG\gpg2.exe" 
       arguments="--passphrase=#gKeyPassphrase# --batch -o #inputFilePath# -d -r #gEncryptionKeyID#" 
       outputfile="#outputpath#/test.csv" 
       timeout="300">
</cfexecute>

此外,虽然我不熟悉 gpg2,但快速搜索表明该-o参数用于输出文件。然而,在您的 CF 代码中,路径来自一个名为 的变量#inputFilePath#,这似乎有点奇怪。假设这不仅仅是一个不幸的命名选择,您可能还想检查您的文件路径。

于 2013-07-26T17:13:36.950 回答