【问题标题】:uploading a file to a website with ruby/rails使用 ruby​​/rails 将文件上传到网站
【发布时间】:2010-09-28 07:21:12
【问题描述】:

我正在构建一个 Rails 应用程序来测试我们的旗舰产品(也是基于 Web 的)。问题是部分测试需要使用生产应用程序的 Web 界面来上传文件。所以我需要做的是让 rails 应用程序将这些文件上传到生产应用程序(而不是 rails)。有没有办法让 Rails 将文件发布到生产应用程序(就像浏览器将文件发布到生产应用程序一样)?

【问题讨论】:

    标签: ruby-on-rails ruby upload


    【解决方案1】:

    Paperclip gem 确实是一个解决方案。它也适用于其他格式,并且很容易在 Rails 中实现。看看视频..!!

    http://railscasts.com/episodes/134-paperclip

    【讨论】:

      【解决方案2】:

      如果你只是需要上传文件,我认为为此使用插件是没有意义的。文件上传非常非常简单。

      class Upload < ActiveRecord::Base
        before_create :set_filename
        after_create :store_file
        after_destroy :delete_file
      
        validates_presence_of :uploaded_file
      
        attr_accessor :uploaded_file
      
        def link
          "/uploads/#{CGI.escape(filename)}"
        end
      
        private
      
        def store_file
          File.open(file_storage_location, 'w') do |f|
            f.write uploaded_file.read
          end
        end
      
        def delete_file
          File.delete(file_storage_location)
        end
      
        def file_storage_location
          File.join(Rails.root, 'public', 'uploads', filename)
        end
      
        def set_filename
          self.filename = random_prefix + uploaded_file.original_filename
        end
      
        def random_prefix
          Digest::SHA1.hexdigest(Time.now.to_s.split(//).sort_by {rand}.join)
        end
      end
      

      然后,您的表单可能如下所示:

      <% form_for @upload, :multipart => true do |f| %>
        <%= f.file_field :uploaded_file %>
        <%= f.submit "Upload file" %>
      <% end %>
      

      我认为代码几乎是不言自明的,所以我不会解释它; )

      【讨论】:

        【解决方案3】:

        您可能想查看回形针插件。非常适合上传图片。也可能适用于其他格式。

        【讨论】:

          【解决方案4】:

          当然,使用 net/http 库...

          http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html

          但它似乎缺少多部分编码,因此请查看另一篇文章

          http://kfahlgren.com/blog/2006/11/01/multipart-post-in-ruby-2/

          看看这个类似的问题

          Ruby: How to post a file via HTTP as multipart/form-data?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-08-06
            • 2012-06-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-20
            • 2011-03-27
            相关资源
            最近更新 更多