【问题标题】:Rails 4, Paperclip, Upload in FTP. How to rename?Rails 4,回形针,在 FTP 中上传。如何重命名?
【发布时间】:2015-05-04 23:16:27
【问题描述】:

我正在使用 Rails 4 和 Paperclip。

因为我需要在 FTP 服务器上上传文件,所以我正在使用这个很棒的 gem:

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/myfileRenamedName.jpg)

如何用FileUtils.move进入ftp???

创建和删除运行良好!

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 ftp paperclip rails-activerecord


    【解决方案1】:

    您必须构建文件的完整路径,而不仅仅是文件的目录名和名称。将您的 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

    【讨论】:

    • 在 ftp 中也可以吗?非常感谢您的帮助,迭戈!
    • 我简要阅读了paperclip-storage-ftp 代码,它们似乎没有提供重命名远程FTP 服务器上的文件的方法。您必须下载文件重命名,然后再次上传。或者你可以使用另一个 gem 来重命名:stackoverflow.com/questions/22260911/…
    • 迭戈,再次感谢。我正在尝试创建一种方法来重命名 paperclip-storage-ftp 中的文件,然后将其分叉。我正在使用此代码,但出现错误。我哪里错了? def rename(newfilename) with_primary_ftp_server do |server| server.rename(file, newfilename) end end Net::SFTP 和 paperclip-storage-ftp 如何一起使用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2014-04-23
    • 2018-08-25
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    相关资源
    最近更新 更多