2008-12-24 80 views
3

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

回答

0

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

7

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

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

我覺得代碼是相當多的自我解釋,所以我不會解釋; )