アップロードするファイルのパスを文字列で設定します。
引数の path は文字列です。File.open できる文字列を指定してください。通常の Web ブラウザの「参照...」ボタンからのファイル指定動作に似ています。
送信実行時にファイル本文としてバイナリモードで読み込まれ、パスの basename が送信ヘッダ Content-Disposition: 内の filename= トークンとして使用され、拡張子から送信文字列内の Content-Type 行が推測され記述されます。
ただし、既に
#file_data= メソッドでファイル本文が設定されていた場合は「参照先」としては機能せず、filename= トークンとしての名称の使用のみが行われます。
送信文字列内の Content-Type 行(送信ヘッダの Content-Type: ヘッダは
Mechanize::Form#enctype で別物)の 推測は、引数 path 末尾の拡張子によって文字処理的に行われます(たとえば、hoge.jpg だったら Content-Type: image/jpeg)。推測不能だった場合は Content-Type: application/octet-stream という行が送信文字列に含まれます。
#mime_type の値は使用されないので注意してください(これは
#file_data= 専用です)。直接指定する方法がないので、処理する拡張子を増やしたい場合は WEBrick::HTTPUtils::DefaultMimeTypes の Hash に拡張子と Content-Type のペアを追加します。
# 拡張子 .rar は rar のファイル
WEBrick::HTTPUtils::DefaultMimeTypes['rar'] = 'application/rar'
agent.page.form(:name => 'upform'){|f|
f.file_upload(:name => 'up'){|up|
up.file_name = '1277337978.rar'
}
}
具体的にどんな拡張子が対応しているかは WEBrick::HTTPUtils::DefaultMimeTypes のソースを見てください。