====== AlFile ファイルアップロード ====== ファイルアップロード用ウィジェットです。 ===== コンストラクタ ===== AlFile.new("名前", オプション) オプション * label - ラベル * required - 必須入力フラグ * filter - 入力フィルタ * tag_attr - htmlタグ生成時の追加アトリビュート ===== 使用例 ===== == 必須入力フラグ == AlFile.new("file1", :required=>true ) ====== ファイルアップロードの特殊性 ====== ===== フォームタグの記述 ===== ファイルをアップロードするフォームは、enctype="multipart/form-data" でなければなりません。
===== フォーム自動生成する場合 ===== フォーム自動生成する場合は、以下のようにします。 @form = AlForm.new( AlFile.new( "file1", :label=>"画像ファイル" ), ... ) @form.tag_attr = { :enctype=>"multipart/form-data" } テンプレート <%= @form.make_tiny_form() %> ===== アップロードされたファイルの利用 ===== アップロードされたファイルは、テンポラリファイルとして保存され、バリデーション後に利用可能になります。 また、スクリプトの終了時に自動的に消去されます。 @form.validate() @form[:file1][:tmp_name] # テンポラリファイル名 @form[:file1][:size] # ファイルサイズ @form[:file1][:content_type] # コンテンツタイプ (image/jpeg等) ===== アップロードされたファイルをそのまま保存する ===== アップロードされたファイルを加工などをせず、そのままファイルとして保存する場合に便利なように、以下の手順が用意してあります。 @form.widgets[:file1].save_file() # ファイルの恒久化 @form[:file1][:saved_name] # 付与されたランダムファイル名 保存する場所をあらかじめ指定しておいてから使います。 AlFile.dirname = "/PATH/TO/SAVE/DIR" @form.validate() @form.widgets[:file1].save_file() ファイル名をランダムに付与しない(固定のファイル名)場合は、File.link を使います。 AlFile.dirname = "/PATH/TO/SAVE/DIR" @form.validate() File.link( @form.widgets[:file1][:tmp_name], "FILENAME" )