Tag: ftp

Rails将文件上传到ftp服务器

我正在使用Rails 2.3.5和Ruby 1.8.6并试图弄清楚如何让用户通过我的Rails应用程序将文件上传到不同机器上的FTP服务器。 我的Rails应用程序也将托管在Heroku上,这不便于将文件写入本地文件系统。 index.html.erb :post, :multipart => true do %> File to Upload ftp_controller.rb require ‘net/ftp’ class FtpController < ApplicationController def upload file = params[:file] ftp = Net::FTP.new('remote-ftp-server') ftp.login(user = "***", passwd = "***") ftp.putbinaryfile(file.read, File.basename(file.original_filename)) ftp.quit() end def index end end 目前我只是想让Rails应用程序在我的Windows笔记本电脑上运行。 使用上面的代码,我收到了这个错误 Errno::ENOENT in FtpController#upload No such file or directory -…. followed […]

在我的ftp服务器上使用paperclip上传照片时出现随机错误

我在我自己的ftp服务器上使用gem “paperclip”上传图片和gem “paperclip-storage-ftp”用于商店图片。 它工作正常一段时间,但现在我收到随机错误,当我上传照片。 有时这个 Net::FTPReplyError – 150 Connecting to port 3270 有时这个 Net::ReadTimeout – Net::ReadTimeout: 有时这个 Paperclip::Storage::Ftp::NoServerAvailable ..有时这个: Net::FTPPermError – 500 ? 模型 class AlbumPhoto :ftp, :path => “www.abcd.com/:attachment/:id/:style/:filename”, :url => “ftp://abcd@domain.com@domain.com/www.abcd.com/:attachment/:id/:style/:filename”, :ftp_servers => [ { :host => “domain.com”, :user => “abcd@domain.com”, :password => “abcd123”, :passive => true } ], :styles => { :medium […]

如何通过rails 3中的ftp写入csv文件?

我试图通过ftp写入csv文件。 这是我到目前为止: require ‘net/ftp’ require ‘csv’ users = User.users.limit(5) csv_string = CSV.generate do |csv| csv << ["email_addr", "first_name", "last_name"] users.each do |user| new_line = [user.email, user.first_name, user.last_name] csv << new_line end end csv_file = CSV.new(csv_string) ftp = Net::FTP.new('**SERVER NAME**') ftp.login(user = "**USERNAME**", passwd = "**PASSWORD**") ftp.storbinary('STOR ' + 'my_file.csv', csv_file) ftp.quit() 我得到错误“错误的参数数量(2个为3)”。 当我将行更改为ftp.storbinary(’STOR’+’my_file.csv’,csv_file,1024)时,它表示“错误的参数数量(1表示0)”。 我也试过使用storlines,但这也给了我错误。 有没有人对如何处理这个有什么想法?

Ruby net / ftp代码由于错误而无法PUT文件

我有这个失败的基本代码: ftpconfighash = open(“#{RAILS_ROOT}/config/ftp.yml”) {|f| YAML.load(f) } config = ftpconfighash[12345] ftp = Net::FTP::new(config[“host”]) ftp.login(config[“username”], config[“password”]) dir += “/” unless config[“dir”].blank? or config[“dir”].ends_with?(“/”) remotename = File.basename(filename) remotename = dir + remotename unless dir.blank? if File.binary?(filename) puts “PUTting binary file #{filename} to #{remotename}” ftp.putbinaryfile(filename, remotename) else puts “PUTting ASCII file #{filename} to #{remotename}” ftp.puttextfile(filename, remotename) end ftp.close […]

使用Ruby中的Net :: FTP将整个目录及其内容移动到同一服务器上的另一个位置

如标题中所述,我想将FTP服务器上的目录移动到同一服务器上的其他路径。 我想用Net::FTP完成这个,但也欢迎其他解决方案。 由于在Net :: FTP文档中没有适当的方法来移动文件或目录,因此最好将目录复制到另一个路径并删除原始文件。 请留下主题并留下与问题相关的解决方案。

通过FTP通过TLS / SSL连接到未经认证的主机

我从中获取文件的供应商正在通过SSL从FTP更改为FTP。 我正在尝试将我的代码从net/ftp更新为net/ftptls 我需要连接的新主机未经过认证,我的脚本会报告此错误。 hostname与服务器证书不匹配 供应商不会解决这个问题。 看看/usr/lib/ruby/1.8/net/ftptls.rb我认为通过猴子修补FTPTLS来忽略不受信任的主机并不会太难。 我尝试将verify_mode更改为OpenSSL::SSL::VERIFY_NONE并注释掉post_connection_check`行。 既没有奏效。 有关如何做到这一点的任何想法? require ‘socket’ require ‘openssl’ require ‘net/ftp’ module Net class FTPTLS < FTP def connect(host, port=FTP_PORT) @hostname = host super end def login(user = "anonymous", passwd = nil, acct = nil) store = OpenSSL::X509::Store.new store.set_default_paths ctx = OpenSSL::SSL::SSLContext.new('SSLv23') ctx.cert_store = store ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER ctx.key = nil […]

如何使用ruby脚本中的Net :: FTP将远程FTP服务器上的文件移动到同一FTP服务器上的目录中

如何使用ruby脚本中的Net :: FTP将远程FTP服务器上的文件移动到同一FTP服务器上的目录中。 我知道文件名,我使用ftp.mkdir创建了一个目录,但显然没有办法将文件移动到创建的文件夹。

Ruby有一个易于使用的FTP库吗?

是否有与FTP服务器交互的高级Ruby库? 而不是Net :: HTTP我可以使用HTTParty,Curb,Rest Client或Typhoeus,这使一切变得更容易,但我找不到任何类似的解决方案来替换/增强Net :: FTP。 更具体地说,我正在寻找: 最小的连接到服务器的行。 例如,必须使用Net :: FTP显式指定login 能够迭代一个文件夹中的所有条目,或使用glob,或者只是递归地。 能够获得所有可能的信息,例如条目类型,大小,mtime,而无需手动解析返回的行。

Ruby Net :: FTP超时线程

我试图通过使用线程FTP连接来加速多个FTP下载。 我的问题是我总是有线程挂起。 我正在寻找一种干净的方式来告诉FTP它需要重试ftp事务,或者至少知道FTP连接何时挂起。 在下面的代码中,我正在线程化5/6个单独的FTP连接,其中每个线程都有一个预期下载的文件列表。 当脚本完成时,一些线程挂起并且无法连接。 我使用变量@last_updated来表示上次成功下载的时间。 如果当前时间+ 20秒超过@last_updated,则终止剩余的线程。 有没有更好的办法? threads = [] max_thread_pool = 5 running_threads = 0 Thread.abort_on_exception = true existing_file_count = 0 files_downloaded = 0 errors = [] missing_on_the_server = [] @last_updated = Time.now if ids.length > 0 ids.each_slice(ids.length / max_thread_pool) do |id_set| threads < %#{p} > #{progress}/#{total} > Got file: #{local_path}” rescue […]

Ruby-Rails直接向客户端提供ftp文件

我是ruby和rails的新手,请原谅我的问题…. 我想知道的是,如何使用ruby从ftp服务器获取文件而不将文件保存在我的rails应用程序硬盘上(将filedata直接流式传输到客户端)。 我正在使用ruby Net / FTP类。 使用Net / FTP类中的“retrbinary”方法,我有以下代码段: ftp.retrbinary(‘RETR ‘ + filename, 4096) { |data| buf << data } 在我的rails视图中,我可以这样做: send_data( buf ) 那么我如何将这两者结合起来呢? 我不知道如何实例化缓冲区对象,填写流并将其提供给用户。 有谁知道如何做到这一点?