1

ディレクトリを作成する直前に cffile を使用できません。cffileupload タグを使用しており、url 属性は次のコードを持つページです。基本的に、以下のコードは新しいディレクトリを作成し、すべての画像をそのディレクトリにアップロードします。ただし、2 回目のアップロードで失敗し、cffileupload フラッシュ オブジェクトで 500 エラーが発生します。ただし、ディレクトリ パスをハードコードすると、すべて正常にアップロードされます。なぜ私がこの問題を抱えているのか誰にも分かりますか?

<!--- User will upload all the images to a temp directory based on date and time --->
<cfset uploadFolderPath = "C:\ColdFusion9\wwwroot\MyApplication\uploads\" />
<cfset date=DateFormat(Now(),'mm-dd-yyyy_') />
<cfset time=TimeFormat(Now(),'hh-mm-ss') />
<cfset newFolderName = "upload_" & date & time />
<cfset newFolder = uploadFolderPath & newFolderName />
<cfdirectory action = "create" directory="#newFolder#" />

<cffile action="uploadall" destination="#newFolder#" nameconflict="makeunique" />
4

4 に答える 4

3

次のコーディングを使用します。既存のコーディングに「DirectoryExists」関数を追加しました。

<cfset uploadFolderPath = GetDirectoryFromPath(GetCurrentTemplatePath()) />
<cfset date =DateFormat(Now(),"mm-dd-yyyy") />
<cfset time = TimeFormat(Now(),"hh-mm-ss") />
<cfset newFolderName = "upload_" & date & time />
<cfset newFolder = uploadFolderPath & newFolderName />

<cfif NOT DirectoryExists(currentDirectory)>
    <cfdirectory action = "create" directory="#newFolder#" />
</cfif>

<cffile action="uploadall" destination="#newFolder#" nameconflict="makeunique" />
于 2010-08-03T01:43:21.770 に答える
1

わかりましたので、アップロードされるファイルごとに cffileupload の url パスが呼び出されることがわかりました。そのため、処理スクリプトが以前にアップロードされたファイルから既存のディレクトリを作成しようとしていたため失敗していました (これは同じ秒の間に発生しました)。ディレクトリを作成する前にディレクトリが存在するかどうかを確認すると、問題が解決しました。

于 2010-08-02T16:48:00.597 に答える
0

フラッシュ ベースの cffileupload を使用すると、表示されるはずの貴重なデバッグ メッセージを見逃す可能性があります。Fiddlerなどのプロキシを接続して、ColdFusion が実際に送受信しているものを確認することもできます。関連する例外情報を投稿すると役立ちます。

raulriera が述べたように、問題はおそらく新しいフォルダーを作成するための cfdirectory 呼び出しにあり、ディレクトリが既に存在する場合はエラーになります。

于 2010-08-01T22:11:05.863 に答える
0

ディレクトリを正しく作成する前に、まずディレクトリが存在するかどうかを確認する必要があります。そうしないと、エラーが発生しますか?

于 2010-07-31T01:14:03.787 に答える