演習 7: 旅行フォトファイルの存在の検証

この時点で、アプリケーションはより実用的なものになっています。クライアントは、Compass Travel の新規の旅行ビジネスルールの大部分の検証を処理しています。旅行フォトファイルを除けば、サーバーは有効なデータのみを受信します。

ただし、旅行フォトファイルビジネスルールは、このデザインにうまく適合しません。このビジネスルールには次の 2 つのルールが含まれています。

ファイル名が入力されたことを確認するために、フォトの cfinput タグに required 属性を使用しました。ここで、ファイルが正しいディレクトリに存在し、アプリケーションがユーザーにそのファイルを表示できることを確かめる必要があります。

ブラウザのクライアントは、Web サーバー上で標準のファイル I/O (入力/出力) を禁じられているので、旅行メンテナンスアプリケーションは、サーバーサイド検証を使用して、フォトファイルの存在を確認します。"tripeditaction.cfm" ページにフォトファイル用のビジネスルールを追加します。

ファイルが存在することを検証するために、ColdFusion には FileExists 関数が用意されています。この関数のシンタックスは次のとおりです。

FileExists(absolute_path)

引数で指定されたファイルが存在する場合、この関数は Yes を返します。そうでない場合には、No を返します。

メモ: 旅行フォトイメージは、Web ルートディレクトリを基準として、¥cfdocs¥getting_started¥photos というパスに保管されています。したがって、Web ルートディレクトリが C:¥inetpub¥wwwroot の場合、フォトは C:¥inetpub¥wwwroot¥cfdocs¥getting_ started¥photos ディレクトリに保管されています。

FileExists 関数の詳細については、『CFML リファレンス』を参照してください。

フォトファイル名が存在することを検証するには :

  1. my_app ディレクトリの "tripeditaction.cfm" ファイルを開きます。
  2. ユーザーが有効なフォトファイル名を入力したことを確認するロジックを追加します。最初の <cfset isOk = "Yes"> ステートメントの直後に次のコードを追加します。
    	<!-- フォトファイルが存在するかどうかを確認します。 --->
    	<cfset PhotoLocation = "C:¥Inetpub¥wwwroot¥CFDOCS¥getting_started¥Photos¥">
    	<cfset PhotoLocation = PhotoLocation  & FORM.photo> 
    	<cfif not FileExists(PhotoLocation)> 
    	   <cfset isOk = "No">
    	   <cfoutput>Trip Photo does not exist</cfoutput>
    	</cfif>
    
  3. コピーしたコードが正しい PhotoLocation パスを指していることを確認します。このパスは、<cfset PhotoLocation = "C:..."> タグで指定します。

    たとえば、Web サーバーの設定によっては、フォトファイルのパスは次のようになります。

  4. MS Windows の場合 :
  5. 	<cfset PhotoLocation =
    	"C:¥CFusionMX7¥wwwroot¥cfdocs¥getting_started¥photos¥">
    

    または、

    <cfset PhotoLocation = "C:¥Inetpub¥wwwroot¥CFDOCS¥getting_started¥Photos¥">
  6. Linux または Solaris の場合:
  7. 	<cfset PhotoLocation =
    	"/opt/cfusionmx7/wwwroot/cfdocs/getting_started/photos/">
    

    または、

    <cfset PhotoLocation = "/<webserverdocroot>/cfdocs/getting_started/photos/">
  8. ファイルを保存します。

編集されたコードをテストするには :

  1. ブラウザに "tripedit.cfm" ページを表示します。
  2. 次の手順を実行して、テストを実施します。
    1. Trip Edit ページで [Photo Filename] フィールド以外のすべての必須フィールドに有効な情報を入力します。
    2. [Photo Filename] フィールドに 「nowhere.jpg」と入力して [Save] をクリックします。
    3. 次のエラーメッセージが表示されます。"Trip photo does not exist."

    4. エラーを回避するには、Trip Edit ページの無効なフォトファイル名を somewhere.jpg に置き換えて、[Save] をクリックします。
    5. 次のメッセージが表示されます。"Trip added."

コードの確認

次の表で、フォトファイルが存在するかどうかを検証するために使用されるコードを示します。

コード 説明
<cfset PhotoLocation =
"C:¥CFusionMX7¥wwwroot¥cfdocs¥
getting_started¥photos¥">

cfset タグにより、PhotoLocation パスの値が適切なディレクトリに設定されます。

メモ : このコードは、Windows システムに対する 1 つの値を示しています。

<cfset PhotoLocation = PhotoLocation  & FORM.photo>

cfset タグにおける ColdFusion の & 演算子は、フォームに入力されたフォトファイル名とディレクトリ名を結合します。

<cfif not FileExists(PhotoLocation)> 
   <cfset isOk = "No">
   <cfoutput>
   Trip Photo does not exist.
   </cfoutput>
</cfif>

FileExists は、fileLocation 変数が示すファイルがディスクの指定された場所に存在するかどうかを確認します。存在しない場合、エラーメッセージが表示されます。


ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX* | ColdFusion 5* | フォーラム* | デベロッパーセンター | サポート情報 | バグ報告

バージョン7

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/coldfusion/7_jp/htmldocs/bus_ru10.htm