Rails:Amazon S3 + Paperclip 不在数据库中存储任何内容?

Posted

技术标签:

【中文标题】Rails:Amazon S3 + Paperclip 不在数据库中存储任何内容?【英文标题】:Rails: Amazon S3 + Paperclip not storing anything in database? 【发布时间】:2012-10-10 16:21:12 【问题描述】:

您好,我目前正在制作一个供用户上传图片的应用。我正在尝试添加 Amazon S3 以准备部署我的应用程序。我没有收到任何错误,但在尝试设置 Amazon S3 后,我的图片无法正确上传。图片正在正确上传到亚马逊,而不是在我的数据库中,因此当我上传图片并尝试在视图中循环显示它们时,什么也没有显示。谁能帮帮我?

顺便说一句,我正在使用 Paperclip + jQuery 文件上传(用于多个图片上传)+ Amazon S3 + s3_direct_upload gem (https://github.com/WayneHoover/s3_direct_upload)

配置路由(注意图片嵌套在相册和用户中)这里没有问题

Pholder::Application.routes.draw do
resources :users do
  resources :friends
  resources :albums do
    resources :photos
  end
end
end

users/show.html.erb(应该显示我上传的图片的页面,即使在我上传后也没有显示新图片)

    <% @user.albums.each do |album| %>
        <div class="albumthumb">
            <%= link_to image_tag(!album.photos.empty? ? album.photos.first.avatar.url(:medium) : ("questionmark.png"), :size => "150x150"), user_album_path(@user, album) %>
            <br>
            <%= album.name %>
        </div>
    <% end %>

photos/new.html.erb(这里也有问题)

 #my new uploader that works with amazon s3, but doesn't seem to be storing the pics in my database
<%= s3_uploader_form post: user_album_photos_path, as: "photo[avatar]", id: "myS3Uploader" do %>
  <%= file_field_tag :file, multiple: true %>
<% end %>

#this is my old upload form that worked fine when uploading pics to my local public directory. 
#
#<% provide(:title, "Upload pictures") %>
#
#<%= form_for([@user, @album, @photo], :html =>  :multipart => true ) do |f| %>
#
#<%= f.file_field :avatar, multiple: true, name: "photo[avatar]" %>


<div id="pics">
    <%= render :partial => "photo", :collection => @photos %>
</div>

<script id="template-upload" type="text/x-tmpl">
<div class="upload">
  %=o.name%
  <div class="progress"><div class="bar" style="width: 0%"></div></div>
</div>
</script>

这是我在 github 上的代码:https://github.com/EdmundMai/railstest/blob/master/app/views/photos/new.html.erb

如果您需要我上传更多代码,请告诉我。请帮忙!

【问题讨论】:

【参考方案1】:

JQuery 文件上传只是将文件上传到 Amazon S3:它不会将所需的回形针记录添加到数据库中。为此,您需要执行更多步骤。请参阅jquery-fileupload-rails-paperclip-example 或jQuery File Upload v4 for Rails 3。

【讨论】:

谢谢 Max,我现在去看看,几分钟后告诉你 您能否给我一些指导,让我了解我应该查看 mvc 的哪个部分? html 表单对我来说看起来很复杂。您是否建议我停止使用 s3_direct_upload gem? 使用通常的表单上传方法与Paperclip接口当然更容易。但是,JQuery File Upload 确实有很多简洁的功能,例如多次上传、拖放、进度指示器等。因此,如果您想要这些功能,那么添加额外的 javascript 代码以使其与 Paperclip 一起使用可能是值得的. 看看jQuery File Upload v4 for Rails 3,它对所需内容的解释非常简单。 我意识到我制作了一个更早的表格,它确实有效...... !!!感谢您的帮助

以上是关于Rails:Amazon S3 + Paperclip 不在数据库中存储任何内容?的主要内容,如果未能解决你的问题,请参考以下文章

Rails:从 URL 保存文件并将其保存到 Amazon S3

Paperclip 不显示图像,而是在 rails 中显示带有 amazon s3 的标题?

使用Rails显示存储在Amazon S3上的PDF

在rails中将对象上传到Amazon s3时添加Tag

如何在 Amazon S3 中自定义 Rails 5.2 ActiveStorage 附件的路径?

Rails:Amazon S3 + Paperclip 不在数据库中存储任何内容?