2011-10-21 11 views
3

コンポーネントに処理(CRUDビヘイビア)のために提出したいフォームがあります。問題は、multipart/form-dataをコンポーネントに渡してファイルの場所が失われているようです。ファイルをアップロードする必要があるコンポーネントの部分に到達すると、悪名高いフォームフィールドにファイルエラーが含まれていません。CFFILE - コンポーネントを使用してファイルをアップロードする

私はなぜこれが起こって、100%確実ではないが、私は予想通りcffile行動すべてが動作しますが、.CFMページのようなものない場合は行い.CFMページに直接フォームを送信した場合:

<cfobject name="process_form" component="processor" /> 
<cfset result = process_form.upload(form) /> 

コンポーネント "プロセッサ"がアップロードを実行しようとすると、フォームフィールドにファイルが含まれていません。

私のプロセッサは、次のようになります。私はその周りに#記号なしで変数arguments.form_data.file_1を使用しようとすると、私はエラーを取得している、

<cfcomponent name="processor"> 
     <cffunction name="upload" returntype="string"> 
     <cfargument name="form_data" type="struct" /> 
     <cffile action="upload" filefield="#arguments.form_data.file_1#" ...> 
      [ ... ] 
     </cffunction> 
    </cfcomponent> 

もう一つ注意すべき:

The form field arguments.form_data.file_1 did not contain a file. 

た場合、私はティを修正する方法上の任意のアイデア

The form field C:\JRun4\servers\cfusion\SERVER-INF\temp\cfusion-war-tmp\neotmp7350969777287007477.tmp did not contain a file. 

:私が得る変数の周りに#記号を置きます問題?私はむしろコンポーネント内にすべての処理アクションを持っていますが、今はその作業を行うことができません。

ありがとうございます! ウィル

答えて

6

あなたはcffileタグを使用している場合、完全な変数名を使用する必要はありません - あなただけのフォームフィールド名が必要なので、のようなもの:

<cffile action="upload" filefield="file_1" ...> 

で十分です。 FORM構造体フィールドはテンポラリファイルの場所を保持しますが、cffileタグはそれを必要としません(私が提供したフィールド名に基づいて、idが直接FORM構造体にバックエンドでアクセスすることをイメージします)。

+0

私はちょうどそれを試して、私は得た:フォームフィールドform_data.file_1は、ファイルが含まれていませんでした。 – wblakenc

+0

@wblakenc、申し訳ありませんが、私はばかだとコピーして貼り付けたものを見ていませんでした。フィールド名 'file_1'を使うことができます。私は元の答えを修正しました。 –

+0

これに遅れて返事して申し訳ありません。あなたは正しいです!素晴らしい答え。私は "file_1"フィールドがまだ範囲内にあるかどうかはわかりませんが、うまくいくようです。再度、感謝します。 – wblakenc

関連する問題