[英]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 %>
我認為代碼幾乎是自我解釋的,所以我不會解釋它; )
當然,使用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/
看看這個類似的問題
Paperclip gem確實是一種解決方案。 它也適用於其他格式,並且很容易在rails中實現。 看看視頻.. !!
您可能想查看Paperclip插件。 非常適合上傳圖片。 也可能適用於其他格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.