説明
サーバー上のディレクトリにファイルをコピーします。
シンタックス
<cffile action = "upload" allowedExtensions="comma-separated list of file extensions" destination = "full pathname" fileField = "form field" accept = "MIME type|file type" attributes = "file attribute or list" mode = "permission" nameConflict = "behavior" result = "result name" strict="true|false" ContinueOnError = "true|false" Errors = "ファイルアップロードエラーを格納する変数">
関連項目
履歴
ColdFusion(2018 リリース)アップデート 3、ColdFusion(2016 リリース)アップデート 10、ColdFusion 11 アップデート 18:属性 allowedExtensions が追加されました。
ColdFusion 10: 属性 strict が追加されました。メインの cffile タグページの履歴セクションを参照してください。
属性
属性 |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
action |
必須 |
|
このタグが実行するファイル操作のタイプです。 |
allowedExtensions | オプション | ファイル拡張子のコンマ区切りリスト。アップロードを許可されます。 例えば、.png, .jpg または .jpeg です。 「*」(星)を使用して、accept 属性で指定した MIME タイプを除くすべてのファイルを許可します。 属性 allowedExtensions で指定した値が、サーバーまたはアプリケーション設定でブロックされた拡張子のリストを上書きします。 |
|
destination |
必須 |
|
ファイルのアップロード先となる ディレクトリ の パス名。絶対パス(ドライブ文字とコロン、あるいはスラッシュまたは円記号から始まるパス)を指定しない場合は、GetTempDirectory 関数から返される ColdFusion テンポラリディレクトリを基準とする相対パスを指定します。 |
fileField |
オプション |
|
ファイルを選択するときに使用したフォームフィールドの名前です。フィールド名を指定するときは、シャープ記号(#)を使用しないでください。この属性を省略した場合、デフォルト値は送信される最初の file フィールドの名前になります。 |
accept |
オプション |
|
受け入れる MIME タイプを制限します。コンマ区切りリストです。例えば、コード "image/jpg,application/msword" では、JPEG ファイルと Microsoft Word ファイルのアップロードが許可されます。 strict="true" の場合 accept 属性に MIME タイプが指定されている場合、サーバーまたはアプリケーション設定で拡張子がブロックされると、そのファイルはアップロードされません。 strict="false" の場合 accept 属性でファイル拡張子を指定すると、その拡張子はサーバーまたはアプリケーション設定のブロックされた拡張子リストを上書きします。その後、そのファイルはアップロードされます。 accept 属性で MIME タイプを指定し、アップロードしようとしているファイルの拡張子が管理者/アプリケーションレベルの設定でブロックされている場合、そのファイルはアップロードされません。 次に例を示します。
属性 allowedExtensions で指定した値が、サーバーまたはアプリケーション設定でブロックされた拡張子のリストを上書きします。 |
attributes |
オプション |
|
Windows に適用されます。ファイルに設定する属性をコンマ区切りリストで指定します。
|
mode |
オプション |
|
UNIX および Linux だけに適用されます。権限。 chmod コマンドの 8 進数値。次に割り当てられます。 オーナー 、グループ、その他にそれぞれ例えば次のように:
|
nameConflict |
オプション |
Error |
取るべきアクション ファイル名 がディレクトリのファイルのものと同じ場合。
|
result |
オプション |
|
変数の名前を指定しましょう。 cffile が結果(またはステータスの)パラメーターを返すものです。この属性の値を指定しないと、 cffile は接頭辞 cffile を使用します。詳細については、「使用方法」を参照してください。 |
strict |
オプション | true |
strict="false" accept 属性でファイル拡張子を指定すると、その拡張子はサーバーまたはアプリケーション設定のブロックされた拡張子リストを上書きします。その後、そのファイルはアップロードされます。 accept 属性で MIME タイプを指定し、アップロードしようとしているファイルの拡張子が管理者/アプリケーションレベルの設定でブロックされている場合、そのファイルはアップロードされません。 次に例を示します。
strict="true" accept 属性に MIME タイプが指定されている場合、サーバーまたはアプリケーション設定で拡張子がブロックされると、そのファイルはアップロードされません。 例えば、ColdFusion Administrator でファイルタイプ CFM をブロックし、accept="text/x-coldfusion" および strict="true" を指定して CFM ファイルのアップロードを試行すると、ファイルはアップロードされません。 属性 allowedExtensions で指定した値が、サーバーまたはアプリケーション設定でブロックされた拡張子のリストを上書きします。 |
ContinueOnError | オプション | False | デフォルトでは、ファイルのアップロードに失敗すると、残りのファイルはアップロードされません。この値を true に設定した場合、アップロードエラーの発生後もファイルのアップロードが継続されます。ファイルアップロードエラーは次の理由により発生します。 1. 空のファイル アップロードに失敗した場合、エラーの詳細が errors 属性に格納されます。 |
エラー | オプション | cffile .uploadAllErrors | ファイルアップロードエラーが保存される変数の名前。continueOnError が true の場合、エラーが指定された変数名に追加されます 。 ファイルのアップロードが完了すると、各アップロードエラーのアップロードエラー情報を含む構造の配列をこのタグが作成します。 アップロード失敗情報のエラー構造体には次のフィールドが含まれます。
|
0 バイトのファイルをアップロードしても、例外は発生しません。代わりに、ファイルがサーバーにアップロードされます。デフォルトでは、空のファイルをアップロードしてもエラーは発生しません。ただし、coldfusion.file.upload.disallowemptyfileupload プロパティを TRUE に変更することで、これを禁じることができます。
使用方法
ファイルのアップロードが終了すると、ファイルアップロードのパラメーターを使用してステータス情報を取得できます。パラメーターを参照するには、cffile 接頭辞を使用するか、result 属性で代替名を指定した場合はその指定した名前を使用します。例えば、result 属性で名前を指定しなかった場合は、#cffile.fileExisted# として fileExisted パラメーターにアクセスします。result 属性を myResult に設定した場合は、#myResult.fileExisted# として fileExisted パラメーターにアクセスします。ステータスパラメーターは、他の ColdFusion パラメーターを使用できる場所であればどこでも使用できます。cfform タグまたは HTML フォームタグを使用して、アップロードするファイルと同時にフォームも送信する場合は、このタグの例で示すように enctype="multipart/form-data" を指定します。ColdFusion のデフォルトでは、application/x-www-form-urlencoded エンコーディングを使用してフォームが送信されるので、cffile タグでエラーが発生します。
result 属性では、複数のページから同時に呼び出される関数または CFC について、一方の呼び出しの結果が他方の呼び出しの結果を上書きしないようにすることができます。
cffile 接頭辞を優先するために、file 接頭辞は非推奨になりました。新規アプリケーションでは file 接頭辞を使用しないでください。
ページのフォーム上で選択されたファイルまたは multipart/form-data HTTP メッセージ経由でページに送信されたファイルをアップロードする場合には、CGI.content_length 変数の値を調べると、ファイルのおおよそのサイズがわかります。この変数には、ファイルの長さだけでなく、その他のリクエストコンテンツの長さも格納されています。
アップロードを終えた後は、次に示すファイルアップロードステータスのパラメーターを使用できます。
パラメータ |
説明 |
---|---|
attemptedServerFile |
ファイルを保存するために使用された初期名です。 |
clientDirectory |
クライアントのシステムからアップロードされたファイルのディレクトリ位置です。 |
clientFile |
クライアントのシステムからアップロードされたファイルの名前です。 |
clientFileExt |
クライアントシステム上のアップロードされたファイルの拡張子です(ピリオドは含みません)。 |
clientFileName |
クライアントシステム上のアップロードされたファイルの名前です(拡張子は含みません)。 |
contentSubType |
保存ファイルの MIME コンテンツサブタイプです。 |
contentType |
保存ファイルの MIME コンテンツタイプです。 |
dateLastAccessed |
アップロードされたファイルが最後にアクセスされた日付と時刻です。 |
fileExisted |
同じパスを持つファイルが存在しているかどうかを yes または no で示します。 |
fileSize |
アップロードされたファイルのサイズです(バイト単位)。 |
fileWasAppended |
アップロードされたファイルが他のファイルに追加されたかどうかを yes または no で示します。 |
fileWasOverwritten |
ファイルが上書きされたかどうかを yes または no で示します。 |
fileWasRenamed |
名前の重複を回避するために、アップロードされたファイルの名前が変更されたかどうかを yes または no で示します。 |
fileWasSaved |
ファイルが保存されたかどうかを yes または no で示します。 |
oldFileSize |
ファイルのアップロード処理によって上書きされたファイルのサイズです。 |
serverDirectory |
サーバー上に実際に保存されたファイルのディレクトリです。 |
serverFile |
サーバー上に保存されたファイルの名前です。 |
serverFileExt |
サーバー上にアップロードされたファイルの拡張子です(ピリオドは含みません)。 |
serverFileName |
サーバー上にアップロードされたファイルの名前です(拡張子は含みません)。 |
timeCreated |
アップロードされたファイルが作成された時刻です。 |
timeLastModified |
アップロードされたファイルが最後に修正された日付と時刻です。 |
ファイルステータスのパラメーターは読み取り専用です。これらの変数には、最新の cffile 操作の結果が設定されます。2 つの cffile タグを実行すると、result 属性で異なる結果変数を指定していない限り、最初の結果は 2 番目の結果によって上書きされます。
例
次の例では、Windows 上でのファイルアップロード時に名前が競合している場合に、固有のファイル名を作成します。
<! --- Windows の例---> <! ---Form 変数が存在するかどうかを確認します。---> <cfif isDefined("Form.FileContents") > <! ---TRUE の場合はファイルをアップロードします。---> <cffile action = "upload" fileField = "FileContents" destination = "c:\files\upload\" accept = "text/html" nameConflict = "MakeUnique"> <cfelse> <! ---FALSE の場合はフォームを表示します。---> <form method="post" action=<cfoutput>#cgi.script_name#</cfoutput> name="uploadForm" enctype="multipart/form-data"> <input name="FileContents" type="file"> <br> <input name="submit" type="submit" value="Upload File"> </form> </cfif>
属性 allowedExtensions の例。
<cffile action="upload" destination="#expandpath(".")#" nameconflict="MakeUnique" accept="image/png, image/gif" allowedextensions=".png, .gif" strict="true" continueonerror="true" >