説明

サーバー上のディレクトリにファイルをコピーします。

シンタックス

<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 = "variable in which the file upload errors will be stored">

関連項目

履歴

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 テンポラリディレクトリを基準とする相対パスを指定します。
指定した宛先が存在しない場合は、指定された宛先の名前のファイルが作成されます。例えば、宛先 C:¥XYZ を指定した場合は、C: ドライブにファイル XYZ が作成されます。

fileField

オプション

 

ファイルを選択するときに使用したフォームフィールドの名前です。フィールド名を指定するときは、シャープ記号(#)を使用しないでください。この属性を省略した場合、デフォルト値は送信される最初の file フィールドの名前になります。

accept

オプション

 

受け入れる MIME タイプを制限します。カンマ区切りリストです。例えば、コード "image/jpg,application/msword" では、JPEG ファイルと Microsoft Word ファイルのアップロードが許可されます。

strict="true" の場合

accept 属性に MIME タイプが指定されている場合、サーバーまたはアプリケーション設定で拡張子がブロックされると、そのファイルはアップロードされません。

strict="false" の場合

accept 属性でファイル拡張子を指定すると、その拡張子はサーバーまたはアプリケーション設定のブロックされた拡張子リストを上書きします。その後、そのファイルはアップロードされます。

accept 属性で MIME タイプを指定し、アップロードしようとしているファイルの拡張子が管理者/アプリケーションレベルの設定でブロックされている場合、そのファイルはアップロードされません。

次に例を示します。

  • ColdFusion Administrator でファイルタイプ CFM をブロックし、タグで accept=".cfm" を指定して CFM ファイルのアップロードを試行すると、ファイルがアップロードされます。
  • 例えば、ColdFusion Administrator でファイルタイプ CFM をブロックし、タグで accept="text/x-coldfusion" を指定して CFM ファイルのアップロードを試行すると、ファイルがブロックされます。

属性 allowedExtensions で指定した値が、サーバーまたはアプリケーション設定でブロックされた拡張子のリストを上書きします。

attributes

オプション

 

Windows に適用されます。ファイルに設定する属性をカンマ区切りリストで指定します。
この属性を省略した場合、ファイルの属性が保持されます。各値は明示的に指定する必要があります。例えば、attributes = "readOnly" を指定した場合、他の属性がすべて上書きされます。

  • readOnly
  • hidden
  • normal (normal 以外に他の属性が指定されている場合、normal よりも他の属性が優先されます)

mode

オプション

 

UNIX および Linux だけに適用されます。権限。chmodコマンドの 8 進数値。 次に割り当てられます。オーナー、グループ、その他にそれぞれ例えば次のように:

  • 644: 読み取り/書き込み権限をオーナーに割り当てます。グループ、その他に読み取り権限。
  • 777: 利用者全員に読み取り / 書き込み / 実行許可を割り当てます。

nameConflict

オプション

Error

取るべきアクションファイル名がディレクトリのファイルのものと同じ場合。

  • Error: ファイルは保存されません。ColdFusion によりページの処理が停止され、エラーが返されます。
  • Skip: ファイルは保存されません。このオプションでは、ファイルプロパティに基づいて、動作をカスタマイズできます。
  • Overwrite:ファイルを置換します。
  • MakeUnique: アップロード用に固有のファイル名を作成します。名前は、file オブジェクト変数 serverFile に保管されます。

result

オプション

 

変数の名前を指定しましょう。cffileが結果(またはステータスの)パラメーターを返すものです。この属性の値を指定しないと、cffileは接頭辞cffileを使用します。詳細については、「使用方法」を参照してください。

strict

オプション

true

strict="false"

accept 属性でファイル拡張子を指定すると、その拡張子はサーバーまたはアプリケーション設定のブロックされた拡張子リストを上書きします。その後、そのファイルはアップロードされます。

accept 属性で MIME タイプを指定し、アップロードしようとしているファイルの拡張子が管理者/アプリケーションレベルの設定でブロックされている場合、そのファイルはアップロードされません。

次に例を示します。

  • ColdFusion Administrator でファイルタイプ CFM をブロックし、タグで accept=".cfm" を指定して CFM ファイルのアップロードを試行すると、ファイルがアップロードされます。
  • 例えば、ColdFusion Administrator でファイルタイプ CFM をブロックし、タグで accept="text/x-coldfusion" を指定して CFM ファイルのアップロードを試行すると、ファイルがブロックされます。

strict="true"

accept 属性に MIME タイプが指定されている場合、サーバーまたはアプリケーション設定で拡張子がブロックされると、そのファイルはアップロードされません。

例えば、ColdFusion Administrator でファイルタイプ CFM をブロックし、accept="text/x-coldfusion" および strict="true" を指定して CFM ファイルのアップロードを試行すると、ファイルはアップロードされません。

属性 allowedExtensions で指定した値が、サーバーまたはアプリケーション設定でブロックされた拡張子のリストを上書きします。

ContinueOnError  オプション False

デフォルトでは、ファイルのアップロードに失敗すると、残りのファイルはアップロードされません。この値を true に設定した場合、アップロードエラーの発生後もファイルのアップロードが継続されます。ファイルアップロードエラーは次の理由により発生します。

1. ファイルが空である
2.ファイルタイプが無効である
3.MIME または拡張子が無効である
4.ファイルが既に存在する

アップロードに失敗した場合、エラーの詳細が errors 属性に格納されます。

エラー オプション  cffile.uploadAllErrors

ファイルアップロードエラーが保存される変数の名前。continueOnError が true の場合、エラーが指定された変数名に追加されますファイルのアップロードが完了すると、各アップロードエラーのアップロードエラー情報を含む構造の配列をこのタグが作成します。

アップロード失敗情報のエラー構造体には次のフィールドが含まれます。

  • REASON - 失敗の理由です。
  • DETAIL - ファイルアップロード失敗の詳細です。
  • MESSAGE - 失敗を示す詳細メッセージです。
  • CLIENTFILE- クライアントのシステムからアップロードされたファイル名
  • CLIENTFILEEXT - クライアントシステム上のアップロードされたファイルの拡張子です(ピリオドは含みません)。
  • CLIENTFILENAME - クライアントシステム上のアップロードされたファイルの名前です(拡張子は含みません)。
  • INVALID_FILE_TYPE - ファイルの MIME タイプまたは拡張子が accept 属性に指定されていない場合。理由が INVALID_FILE_TYPE の場合、この構造体ではさらに次の 2 つのキーが利用可能です。
    • ACCEPT:このタグに指定された MIME タイプまたはファイル拡張子のリストです。
    • MIMETYPE:アップロードされたファイルの MIME タイプ
  • EMPTY_FILE - アップロードされたファイルが空のファイルである場合
  • FILE_EXISTS - 指定された名前のファイルが保存先に既に存在しており、overwritepolicyerrorです。
  • DEST -ファイルがコピーされる保存先
  • FORM_FILE_NOT_FOUND - アップロードされたファイルがサーバー上に見つからない場合。

使用方法

ファイルのアップロードが終了すると、ファイルアップロードのパラメータを使用してステータス情報を取得できます。パラメータを参照するには、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 Example ---> 
<!--- Check to see if the Form variable exists. ---> 
<cfif isDefined("Form.FileContents") > 
<!--- If TRUE, upload the file. ---> 
<cffile action = "upload" 
fileField = "FileContents" 
destination = "c:\files\upload\" 
accept = "text/html" 
nameConflict = "MakeUnique"> 
<cfelse> 
<!--- If FALSE, show the Form. ---> 
<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"
>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー