【问题标题】:Rails Accessing an Uploaded File and Saving it to PaperClipRails 访问上传的文件并将其保存到 PaperClip
【发布时间】:2026-01-08 16:30:02
【问题描述】:

我在 Rails 3 中使用以下文件上传器:https://github.com/blueimp/jQuery-File-Upload

客户端的上传器工作正常。我可以在 Rails 日志文件中看到,当我上传文件时会发布以下内容:

Started POST "/attachments/upload" for 127.0.0.1 at Mon Jan 24 14:15:25 -0800 2011
  Processing by AttachmentsController#upload as */*
  Parameters: {"_http_accept"=>"application/javascript", "authenticity_token"=>"F1h9pvCZL9HUgTjwCIAMc%252BW1cYwx7eBOPwThHfbS5ZU%253D", "file"=>#<ActionDispatch::Http::UploadedFile:0x1076a6d48 @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"joecocker.jpg\"\r\nContent-Type: image/jpeg\r\n", @original_filename="joecocker.jpg", @tempfile=#<File:/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU+++TI/-Tmp-/RackMultipart20110124-12264-rbtnth-0>>}

我遇到的问题是我无法将上传的文件保存到 Paperclip。

我吃过:

@attachment = Attachment.create(:attachment => File.open(params[:file].tempfile.path))
@attachment = Attachment.create(:attachment => params[:file].tempfile.path)

两者都不起作用。 Paperclip 插入文件附件名称为“RackMultipart20110124-12264-rbtnth-0”

关于如何将文件保存到回形针的任何想法/建议?谢谢

【问题讨论】:

    标签: ruby-on-rails paperclip


    【解决方案1】:

    只需使用params[:file] 即可访问该文件。无需做params[:file].tempfile.path。 Paperclip 需要一个完整的File-like 对象。

    【讨论】:

      【解决方案2】:

      可能是您有权限问题。默认情况下,回形针在公用文件夹中创建一个名为系统的文件夹,并在那里保存所有附件。检查您的项目目录的权限。出于测试目的,将其设置为 777

      其次,您不需要手动保存附件。使用回形针后,它会自动保存附件。为了让事情顺利进行,您需要确保执行这些步骤。

      1. 您已将此行添加到您的模型中,has_attached_file :avatar
      2. 您已创建回形针迁移并已运行迁移 您可以使用以下命令生成迁移 rails g paperclip "Model Name" avatar(其中 avatar 将用于处理附件。)
      3. 在您上传文件的查看页面中,只需使用 f.file_field :头像
      4. 在您的显示/索引文件中使用 image_tag :avatar.url(:small),我假设图像附件并且您已将样式应用于图像,例如小拇指等。

      确保上述步骤后,只需运行您的程序即可。

      【讨论】:

        【解决方案3】:

        没有看到你的模型代码很难说,但根据我所看到的,我会尝试:

        @attachment = Attachment.create(params[:file])
        

        【讨论】:

          最近更新 更多