3

私は、主力製品(これもWebベース)をテストするためのRailsアプリを構築しています。問題は、テストの一部で、本番アプリのWebインターフェイスを使用してファイルをアップロードする必要があることです。だから私がする必要があるのは、railsアプリにこれらのファイルを本番アプリケーション(railsではなく)にアップロードさせることです。Railsにファイルを本番アプリケーションに投稿させる方法はありますか(ブラウザーがファイルを本番アプリに投稿するように)?

4

4 に答える 4

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

コードはほとんど自明だと思うので、説明しません。)

于 2008-12-25T10:27:06.870 に答える
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:HTTP経由でmultipart / form-dataとしてファイルを投稿する方法は?

于 2008-12-24T08:05:13.180 に答える
0

Paperclip プラグインをチェックしてみてください。画像をアップロードするのに非常に適しています。他の形式でも機能する可能性があります。

于 2008-12-24T14:38:43.570 に答える