alform:alfile
目次
AlFile ファイルアップロード
ファイルアップロード用ウィジェットです。
コンストラクタ
AlFile.new("名前", オプション)
オプション
- label - ラベル
- required - 必須入力フラグ
- filter - 入力フィルタ
- tag_attr - htmlタグ生成時の追加アトリビュート
使用例
必須入力フラグ
AlFile.new("file1", :required=>true )
ファイルアップロードの特殊性
フォームタグの記述
ファイルをアップロードするフォームは、enctype="multipart/form-data" でなければなりません。
<form name="form1" id="form1" method="post" action="<%=h make_uri(...) %>" 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" )
alform/alfile.txt · 最終更新: 2019/03/12 00:57 by hirohito