校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ruby ftp封裝實例詳解

ruby ftp封裝實例詳解

熱門標(biāo)簽:開封百應(yīng)電銷機器人聯(lián)系方式 樂昌電話機器人 真人語音電銷機器人系統(tǒng) 邯鄲外呼調(diào)研線路 浦東上海400開頭的電話申請 買了外呼系統(tǒng)不想用了怎么辦 北京語音電銷機器人價格 電話機器人電話卡封號怎么辦 武漢呼叫中心外呼系統(tǒng)線路商

 ruby ftp封裝實例詳解

最近自己用ruby 封裝了一個Net::FTP的工具類.

class FtpTool

 def initialize()

  @current_ftp = create_ftp

 end

 

  # 獲取指定格式的文件名稱列表

  # 例如: source = "test/*.txt"

  # 返回: [source/file_name.txt]

 def fetch_remote_filenames(source)

  return [] if source.blank?

  log_info("source is " + source)

  filenames = @current_ftp.nlst(source)

  filenames

 end

   # 獲取服務(wù)器上確切名稱的文件

  # 例如: get("test/test.txt")

  # 文件將被保存到本地 tmp/test/test.txt

 def get(origin_file)

  local_file = local_file(origin_file)

  local_file.gsub("\\", "\\\\") #此處注意是window下執(zhí)行, 在linux下需要注意改成/

  log_info("Ftp Get: #{origin_file} -> #{local_file}")

  begin

   @current_ftp.getbinaryfile(origin_file, local_file+".tmp")

  rescue

   delete_local_file(local_file+".tmp")

  end

  rename_local_file(local_file+".tmp", local_file) if File.exist?(local_file+".tmp")

 end

   # 上傳文件到指定的路徑

  # 例如: put("tmp\\test\\test.txt", "/test/")

def put(origin_file, remote_path)

  return nil if not File.exist?(origin_file)

  _file_name = File.basename(origin_file)

  _root = @current_ftp.getdir

  @current_ftp.chdir(remote_path)

  log_info("Ftp put: #{origin_file} -> #{remote_path}")

  begin

   @current_ftp.putbinaryfile(origin_file, remote_path + _file_name + ".tmp")

  rescue

   delete(remote_path + _file_name + ".tmp")

  end

  @current_ftp.chdir(_root)

  rename(remote_path + _file_name + ".tmp", remote_path + _file_name)

 end

 

  # 關(guān)閉ftp

 def close

  @current_ftp.close if @current_ftp

 end

 

  # 服務(wù)器copy文件 

 def copy(origin_file, file_path)

  local_file = local_file(origin_file)

  _file_name = File.basename(origin_file)

  begin

      #1. 到本地    

 log_info("FTP get file to:" + local_file+".tmp")

   @current_ftp.getbinaryfile(origin_file, local_file+".tmp")

   return nil if not File.exist?(local_file+".tmp")

      #2. 到服務(wù)器   

  log_info("FTP put file to :" + file_path + _file_name + ".tmp")

   @current_ftp.putbinaryfile(local_file+".tmp", file_path + _file_name + ".tmp")

   #3. 改名字

   rename(file_path + _file_name + ".tmp", file_path + _file_name)

   #5. 刪除本地

   delete_local_file(local_file + ".tmp")

  rescue => e

   log_info(e)

   #4. 刪除服務(wù)器上臨時文件

   delete(file_path + origin_file + ".tmp")

   #5. 刪除本地

   delete_local_file(local_file + ".tmp")

  end

 end

   # 服務(wù)器上移動文件

 def move(origin_file, file_path)

  _file_name = File.basename(origin_file)

  begin

   copy(origin_file, file_path)

   # 刪除服務(wù)器上源文件

   delete(origin_file)

  rescue => e

   log_info(e)

   # 刪除臨時文件,如果存在

   delete(file_path + _file_name + ".tmp")

   # 刪除服務(wù)器上目標(biāo)文件, 如果存在

   delete(file_path + _file_name)

  end

 end

   # 重命名服務(wù)器文件

 def rename(origin_file, file)

  if not @current_ftp.list(origin_file).blank?

   log_info("FTP rename #{origin_file} to #{file}")

   @current_ftp.rename(origin_file, file)

  end

 end

 

  # 刪除服務(wù)器上的文件

 def delete(origin_file)

  if not @current_ftp.list(origin_file).blank?

   log_info("FTP delete #{origin_file}")

   @current_ftp.delete(origin_file)

  end

 end

 

 # ftp 是否關(guān)閉

 def closed?

  @current_ftp.closed?

 end

 

 class  self

    # 文件編碼轉(zhuǎn)換

 def convert(src_file, dest_file, from_encode, to_encode )

   log_info("Convert #{src_file} to #{dest_file}")

   cd = Iconv.new(to_encode, from_encode)

   File.open(dest_file, "w") do |out|

    File.open(src_file) do |in_stream|

     in_stream.each_line do |line|

      begin

       new_line = cd.iconv(line)

       out.write(new_line)

      rescue => e

       log_info "convert line error : #{line}"

       next

      end

     end

    end

   end

   cd.close

   dest_file

  end

 end

 

 protected

  #生成ftp

 def create_ftp

  require "net/ftp"

  ftp = Net::FTP.new

  ftp.connect(ftp_host, ftp_port)

  ftp.login(ftp_user, ftp_pwd)

  ftp.passive = ftp_mode

  ftp

 end

 

  #本地路徑

def local_file(file)

  local = File.join("tmp/", file)

  FileUtils.makedirs(File.dirname(local))

  local

 end

 

  # 刪除本地文件 

 def delete_local_file(file)

  if File.exist?(file)

   log_info("delete local file : " + file)

   File.delete(file)

  end

 end

 

  # 重命名本地文件

 def rename_local_file(origin_file, file)

  if File.exist?(origin_file)

   log_info("rename local file : " + origin_file + " to " + file)

   File.rename(origin_file, file)

  end

 end

 

  #初始化參數(shù)

 def ftp_host; "x.x.x.x" end

 def ftp_port; "21" end

 def ftp_user; "x" end

 def ftp_pwd ; "x" end

 def ftp_mode; true end

end

 

您可能感興趣的文章:
  • 使用Ruby實現(xiàn)FTP密碼破解

標(biāo)簽:宜春 河北 自貢 石嘴山 六安 鄂州 淄博 松原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ruby ftp封裝實例詳解》,本文關(guān)鍵詞  ruby,ftp,封裝,實例,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ruby ftp封裝實例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于ruby ftp封裝實例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    成人美女视频在线看| 欧美成人综合网站| 成人午夜激情影院| 国产99久久久国产精品免费看 | 久久人人爽爽爽人久久久| 久久综合久久综合九色| 国产亚洲欧洲一区高清在线观看| 日本一区二区三区电影| 亚洲狠狠丁香婷婷综合久久久| 亚洲电影一区二区三区| 美女免费视频一区| 91福利国产成人精品照片| 欧美日韩久久一区二区| 中文字幕精品—区二区四季| 亚洲欧美日韩中文字幕一区二区三区| 亚洲天堂成人在线观看| 麻豆久久久久久久| 在线视频亚洲一区| 石原莉奈在线亚洲二区| 亚洲精品在线三区| 国产精品888| 亚洲女与黑人做爰| 在线观看不卡一区| 午夜激情综合网| 久久这里只有精品视频网| 久久成人免费网| 中文字幕中文字幕在线一区 | 亚洲亚洲人成综合网络| 日韩精品在线一区二区| 成人免费观看视频| 国产精品国产精品国产专区不蜜 | 国产99精品国产| 亚洲码国产岛国毛片在线| 精品视频在线免费看| 韩日精品视频一区| 亚洲激情在线激情| 成人深夜在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美性色黄大片手机版| 亚洲欧美日韩国产中文在线| 91在线国产福利| 亚洲一区二区精品久久av| 欧洲另类一二三四区| 亚洲国产欧美在线人成| 在线播放中文字幕一区| 激情五月激情综合网| 欧美精品一区二区三区蜜桃视频| 国模无码大尺度一区二区三区| 国产欧美日韩在线| av激情成人网| 婷婷夜色潮精品综合在线| 久久久精品国产免大香伊| 欧美喷水一区二区| 国产亚洲一区二区三区在线观看 | 国产精品久久午夜夜伦鲁鲁| 91麻豆精品国产| 欧美日韩国产一级| 国产99精品视频| 国产精品一区一区三区| 免费高清在线视频一区·| 91日韩精品一区| 天堂资源在线中文精品| 亚洲女厕所小便bbb| 国产婷婷色一区二区三区四区| 国产激情视频一区二区在线观看| 欧美激情在线免费观看| 欧美日本乱大交xxxxx| 国产福利电影一区二区三区| 亚洲女女做受ⅹxx高潮| 国产欧美一区二区精品性色| 91九色02白丝porn| 成人激情文学综合网| 久久国产精品72免费观看| 亚洲免费在线看| 亚洲国产精品高清| 久久亚洲精品小早川怜子| 欧美丝袜丝交足nylons图片| 国产99久久久国产精品潘金网站| 亚洲国产精品久久人人爱蜜臀| 国产女人18毛片水真多成人如厕| 4438成人网| 欧美色图12p| 51精品秘密在线观看| 欧美日韩国产大片| 欧美日韩国产精选| 色婷婷av一区二区三区软件| 不卡电影免费在线播放一区| 国产精品一区在线观看你懂的| 亚洲va韩国va欧美va| 亚洲图片欧美色图| 男女男精品视频网| 国产一区日韩二区欧美三区| 韩国欧美国产一区| 成人黄色av网站在线| 94色蜜桃网一区二区三区| 91丨九色丨国产丨porny| 91美女视频网站| 欧美二区三区的天堂| 日韩女优av电影在线观看| 久久麻豆一区二区| 亚洲精品久久久久久国产精华液| 又紧又大又爽精品一区二区| 天天av天天翘天天综合网| 久草在线在线精品观看| 岛国av在线一区| 欧美日韩视频在线观看一区二区三区| 欧美剧情片在线观看| www国产精品av| 亚洲一区自拍偷拍| 国产麻豆精品theporn| 欧美色男人天堂| 久久久午夜精品理论片中文字幕| 精品精品国产高清a毛片牛牛| 中文欧美字幕免费| 午夜久久久久久电影| 92精品国产成人观看免费 | 中文字幕中文字幕一区| 午夜电影一区二区| 91福利精品视频| 国产精品久久久久影院亚瑟| 亚洲成精国产精品女| 亚洲国产精品国自产拍av| 亚洲曰韩产成在线| 国产成人精品免费看| 欧美r级电影在线观看| 午夜精品久久久久久久久久| 99精品黄色片免费大全| 国产精品久久看| 国产精品亚洲一区二区三区妖精| 91精品国产91久久综合桃花 | 国产一区二区成人久久免费影院| 精品视频免费在线| 午夜影院久久久| 69堂亚洲精品首页| 日本欧美加勒比视频| 国产三级欧美三级| 欧美年轻男男videosbes| 久久久久国色av免费看影院| 亚洲成人手机在线| 日韩无一区二区| 亚洲国产综合91精品麻豆| 在线观看日韩av先锋影音电影院| 亚洲三级电影全部在线观看高清| 色狠狠色噜噜噜综合网| 亚洲bt欧美bt精品777| 日韩免费在线观看| 成人av免费在线播放| 亚洲一区免费视频| 欧美精品一区二区三区一线天视频| 韩国av一区二区三区在线观看| 久久亚洲综合色| 日本福利一区二区| 激情文学综合丁香| 一区二区三区在线免费视频 | 亚洲人成精品久久久久| 欧美高清一级片在线| 国产激情一区二区三区四区| 国产精品久久久久影视| 91精品国产高清一区二区三区 | 免费一级欧美片在线观看| 欧美国产视频在线| 26uuu欧美| 91精品国产入口在线| 色综合天天综合给合国产| 免费人成精品欧美精品| 亚洲电影一区二区三区| 国产精品久久久久aaaa樱花| 日韩免费视频一区二区| 欧美日韩国产小视频在线观看| 粉嫩av一区二区三区| 久久国产成人午夜av影院| 男女男精品网站| 免费成人av资源网| 日本女人一区二区三区| 偷拍一区二区三区四区| 亚洲成人中文在线| 亚洲一区二区三区四区的| 亚洲综合在线电影| 亚洲成a人片在线观看中文| 亚洲精品日韩综合观看成人91| 国产精品久久久久影院老司| 自拍偷在线精品自拍偷无码专区| 国产女人18毛片水真多成人如厕 | 91丨porny丨在线| 欧美亚洲动漫精品| 日韩写真欧美这视频| 精品国产网站在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美成人三级电影在线| 久久精品水蜜桃av综合天堂| 日本一区二区视频在线观看| 亚洲蜜臀av乱码久久精品| 亚洲电影中文字幕在线观看| 亚洲高清免费在线| 精品综合久久久久久8888| 成人黄色av网站在线| 欧美放荡的少妇| 国产精品每日更新| 久久国产生活片100| 91视频免费播放|