[英]Concatenate bytes - Writing file to FTP folder as chunks
我正在编写一个可以将文件上传到存储的Rails应用程序。 大文件从客户端(使用JS)拆分为多个块,然后将其上传到服务器。
在开发中,我可以简单地打开现有文件,然后在其中写入以下字节。
(我正在使用CarrierWave gem)
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
我得到了ArgumentError (string contains null byte):
在putbinaryfile...
,任何帮助:(
如评论中所述,您可以先完全下载文件,然后再上传到ftp服务器。 如果由于某种原因这不是一个选择,则可以在上载远程文件时将其追加:
ftp.storbinary("APPE #{base_name}", up_file_params[:link], Net::FTP::DEFAULT_BLOCKSIZE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.