2

Coldfusion を使用して CSV を復号化しようとしています。CSV はgpg4winを使用して暗号化されています。暗号化されたファイルのフォルダーをチェックし、見つかった場合はそれを復号化し、結果を CSV ファイルとして別のフォルダーに保存するスケジュールされたタスクを CF Admin で作成しました (その後、DB にインポートされます)。

これはコードの抜粋です:

<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 に答える