【问题标题】:How to use paperclip with a file already on my server?如何将回形针与我服务器上已有的文件一起使用?
【发布时间】:2009-11-26 14:36:55
【问题描述】:

郑重声明,我正在处理遗留代码,并尝试在不破坏所有内容的情况下插入新功能。现在我的服务器上有一堆文件:

 myapp/public/temp/myfile.doc

问题是我想在控制器操作中从这些文件创建一个 Docfile 对象。

这是精简后的 Docfile 类:

class DocFile < ActiveRecord::Base
  has_attached_file :docs,
    :path => "#{Constants::DOCFILES_PATH}:basename.:extension",
    :url => "http://#{Constants::SITE_URL}/docs/:basename.:extension"
end

如果您从表单上传,Paperclip 有一些很好的文档,但在我的情况下没有。

那么我如何“模拟”我正在上传文件的事实呢?

到目前为止,我已经尝试过:

temp_file_url = "correct_rails_root/myapp/public/temp/myfile.doc"
@docfile = DocFile.new :docs => temp_file

但它不起作用。

任何指针将不胜感激!

编辑:

我这样做了:

temp_file_url = Constants::TEMPORARY_UPLOAD_PATH + "/" + params[:temp_file_upload][:doc]
temp_file = File.new(temp_file_url,  "w+")
@docfile = DocFile.new :docs => File.open(temp_file_url)

还是不行

【问题讨论】:

    标签: ruby-on-rails ruby file-upload paperclip


    【解决方案1】:

    我必须这样做:

    temp_file_name = #the filename
    temp_file_path = Constants::TEMPORARY_UPLOAD_PATH + "/" + temp_file_name
    temp_file = File.new(temp_file_path,  "r")
    
    @docfile = DocFile.new :docs => temp_file
    

    显然,如果我没有以“读取”的方式打开文件,它将无法正常工作。这对我来说意义不大,但现在可以了!

    【讨论】:

      【解决方案2】:

      我不是 Rails 的权威,但是,

      @docfile = DocFile.new :docs => temp_file
      

      不应该

      @docfile = DocFile.new :docs => temp_file_url  
      

      【讨论】:

      • 这是真的,不知道会不会有影响^^我现在正在测试
      【解决方案3】:

      你应该传递 Paperclip 一个 File 对象:

      temp_file_path = 'correct_rails_root/myapp/public/temp/myfile.doc'
      @docfile = DocFile.new :docs => File.open(temp_file_path)
      

      【讨论】:

        【解决方案4】:

        我认为您需要通过迁移来解决这个问题,对于现有文件,您需要填充回形针添加到模型中的列(xxx_file_namexxx_content_type, xxx_file_size)。您没有提到 Constants::DOCFILES_PATH 是否映射到您的旧文档目录,但即便如此,我认为您必须将这些文件符号链接到回形针期望的目录结构。

        【讨论】:

        • 感谢您的回答。这一切都完成了。与“正常”表格一起使用时,回形针可以正常工作。这种情况是不同的,所以这只是一些黑客行为......有什么想法吗?
        猜你喜欢
        • 2012-12-18
        • 2012-01-26
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 2021-05-25
        • 1970-01-01
        相关资源
        最近更新 更多