我正在使用Rails 4和Paperclip。
beacuse我需要在FTP服务器上上传文件,我正在使用这个很棒的宝石:
https://github.com/xing/paperclip-storage-ftp
在本地中,一切正常,但是在FTP中,我无法使用此代码重命名文件:
def rename_myfile
if self.rename.present?
path = self.myfile.path
FileUtils.move(myfile.path, File.join(File.dirname(myfile.path), self.rename))
self.myfile_file_name = self.rename
end
end
我有一个错误:
否这样的文件或目录 @ sys_fail2-(/myfiles/19/original/myfileoriginalname.jpg,/myfiles/19/original/myfilerenamednamedname.jpg)
如何使用fileutils.move进入FTP ???
创建和删除运行良好!
https://github.com/xing/paperclip-storage-ftp/issues/28
您必须构建通往文件的完整路径,而不仅仅是文件的dirname和name。将您的FileUtils.move
行更改为:
orig_full_path = Rails.root.join "public", myfile.path # assuming they're saved in your public directory
new_full_path = Rails.root.join "public", File.dirname(myfile.path), self.rename
FileUtils.move orig_full_path, new_full_path
这里的想法是获取文件的绝对路径。在您仅给Fileutils此路径之前:/myfiles/19/original/myfileOriginalName.jpg
,这意味着它将在文件系统根部中查找文件夹/myfiles
中的文件。但是它们实际上在您的栏杆文件夹中。因此,您应该使用Rails.root.join
获取真正的绝对路径:/Users/me/my_rails_project/public/myfiles/19/original/myfileOriginalName.jpg
。