簡體   English   中英

使用ruby / rails將文件上傳到網站

[英]uploading a file to a website with ruby/rails

我正在構建一個rails應用程序來測試我們的旗艦產品(也是基於Web的)。 問題是部分測試需要使用生產應用程序的Web界面來上傳文件。 所以我需要做的是讓rails app將這些文件上傳到生產應用程序(而不是rails)。 有沒有辦法讓rails將文件發布到生產應用程序(比如瀏覽器將文件發布到生產應用程序)?

如果你只需要上傳文件,我認為使用插件是沒有意義的。 文件上傳非常非常簡單。

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 %>

我認為代碼幾乎是自我解釋的,所以我不會解釋它;

Paperclip gem確實是一種解決方案。 它也適用於其他格式,並且很容易在rails中實現。 看看視頻.. !!

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

您可能想查看Paperclip插件。 非常適合上傳圖片。 也可能適用於其他格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM