0

我正在使用Rails 4和Paperclip。Rails 4,回形针,FTP上传。如何重命名?

怎么一回事,因为我需要上传我使用这个伟大的宝石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的/ 1 9/original/myfileRenamedName.jpg)

如何使用FileUtils.move输入ftp?

创建和删除工作得很好!

https://github.com/xing/paperclip-storage-ftp/issues/28

回答

0

你必须建立完整的文件路径而不仅仅是文件的目录名和文件名。改变你的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文件夹中。所以你应该使用Rails.root.join来获得真正的绝对路径:/Users/me/my_rails_project/public/myfiles/19/original/myfileOriginalName.jpg

+0

也在ftp中有效吗? Diego非常感谢您的帮助! –

+0

我简短地阅读了“paperclip-storage-ftp”代码,他们似乎没有提供重命名远程FTP服务器上的文件的方法。您必须下载该文件重新命名,然后重新上传。或者你可以使用另一个宝石做重命名:http://stackoverflow.com/questions/22260911/move-and-rename-file-on-ftp-site-with-ruby – DiegoSalazar

+0

迭戈,再次感谢。我试图创建一个方法来重命名paperclip-storage-ftp中的文件,然后将其分叉。我正在使用此代码,但出现错误。我错在哪里? 'def rename(newfilename) with_primary_ftp_server do | server | server.rename(file,newfilename) end end'如何将net :: SFTP和paperclip-storage-ftp一起使用? –