2009年5月12日火曜日

ファイル転送

ファイル転送メソッドについて。

  
require 'net/ftp'

def self.upload(file, options)

  ftp = Net::FTP.new
  ftp.connect(options[:ftp_server])
  ftp.login(options[:user], options[:passwd])
  ftp.binary = true
  ftp.chdir(options[:dir]) if options[:dir] 
  ftp.put( file )
  ftp.quit

end

と書いてあげればファイルのFTPアップロードができる。
ちなみに引数は以下の通り。
  
files #転送したいファイルのファイル名を要素に持つ配列
options[:ftp_server] # サーバーのホスト名
options[:user] # ユーザ名
options[:passwd] # パスワード
options[:dir] # 転送先ディレクトリ

ruby リファレンスによると、
  
Net::FTP#put(localfile, remotefile = File.basename(localfile), blocksize = DEFAULT_BLOCKSIZE)
Net::FTP#put(localfile, remotefile = File.basename(localfile), blocksize = DEFAULT_BLOCKSIZE) { |data| .... }

binaryの値に従ってローカルファイル localfile を送信し、 remotefile をファイル名とするリモートファイルに保存します。 remotefileが省略されるとlocalfileのベースネームが仮定されます。 block_sizeが省略されるとDEFAULT_BLOCLSIZEが仮定されます。この値は binary が真であるときのみ有効です。
---

らしいので、転送先で指定したファイル名で転送先に保存したい場合はputの引数に保存するファイル名を指定してあげるとよい。

0 件のコメント: