ユーザ用ツール

サイト用ツール


alform:alfile

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
最新リビジョン 両方とも次のリビジョン
alform:alfile [2019/03/03 18:27]
hirohito ↷ prog_cgi:alfile から alform:alfile へページを移動しました。
alform:alfile [2019/03/12 00:56]
hirohito
ライン 20: ライン 20:
   AlFile.new("​file1",​ :​required=>​true )   AlFile.new("​file1",​ :​required=>​true )
  
-== htmlタグ生成時追加トリビュト == + 
-  AlFile.new("​file1",​ :tag_attr=>{size:"50"}) +====== ファイルアップロードの特殊性 ====== 
-   + 
-  ​make_tag()出力 +===== フォームタグの記述 ===== 
-  ​<input type="file" name="file1" id="​file1" ​size="50">​+ 
 +ファイルをップロドするフォームは、enctype="​multipart/​form-data"​ でなければなりません。  
 + 
 +  <form name="​form1"​ id="​form1"​ method="​post"​ action="<​%=h make_uri(...) %>" enctype="​multipart/​form-data">​ 
 + 
 +===== フォーム自動生成する場合 ===== 
 + 
 +フォーム自動生成する場合は、以下のようにします。 
 + 
 +<code ruby> 
 +@form = AlForm.new( 
 +  AlFile.new( "​file1",​ :label=>"​画像ファイル"​ ), 
 +  ... 
 +
 +@form.tag_attr = { :enctype=>​"multipart/​form-data" } 
 +</​code>​ 
 + 
 +テンプレート 
 + 
 +<code html> 
 +  <%= @form.make_tiny_form(%> 
 +</​code>​ 
 + 
 + 
 +===== アップロードされたファイルの利用 ===== 
 + 
 +アップロードされたファイルは、テンポラリファイルとして保存され、バリデーション後に利用可能になります。 また、スクリプトの終了時に自動的に消去されます。 
 + 
 +  ​@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