0
ファイルをストレージにアップロードできるRailsアプリを書いています。ビッグファイルはクライアント(JS付き)からチャンクに分割され、パーツをサーバーにアップロードします。バイトを連結する - チャンクとしてFTPフォルダにファイルを書き込む
開発時には、単に既存のファイルを開き、それに次のバイトを書き込むことができます。
(私はCarrierWaveの宝石を使用しています)
File.open(@up_file.link.path, "ab") do |f|
f.write(up_file_params[:link].read)
end
# This code worked when I upload to '/public' folder in development
しかし、今私は、ストレージ・ファイルへのFTPサーバーを使用したいです。しかし、新しいバイトを既存のバイトと連結することはできません。
def get_ftp_connection # create a new FTP connection
ftp = Net::FTP.new
ftp.connect(ENV['ftp_host'], ENV['ftp_port'])
begin
ftp.passive = ENV['ftp_passive']
ftp.login(ENV['ftp_user'], ENV['ftp_passwd'])
yield ftp
ensure
ftp.quit
end
end
.....
def create
.....
get_ftp_connection @up_file do |ftp|
full_path = ::File.dirname "#{ENV['ftp_folder']}/#{@up_file.link.path}"
base_name = File.basename(@up_file.link.to_s)
ftp.chdir(full_path)
ftp.putbinaryfile(up_file_params[:link].read, base_name)
end
end
コメントで述べたように私はあなたが完全に最初のファイルをダウンロードして、FTPサーバにアップロードすることができた。それが何らかの理由でオプションではありません場合は、putbinaryfile...
で任意のヘルプ:(
あなたのサーバー上の一時ファイルにアップロードすることができます。アップロードが完了したら、それをftpサーバーに入れます。 –