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一起使用? –