загрузка файла на сайт с помощью ruby ​​/ rails - PullRequest
3 голосов
/ 24 декабря 2008

Я создаю приложение rails для тестирования нашего флагманского продукта (также веб-). Проблема заключается в том, что для тестирования необходимо использовать веб-интерфейс производственного приложения для загрузки файлов. Так что мне нужно сделать, чтобы приложение rails загрузило эти файлы в производственное приложение (а не rails). Есть ли способ заставить рельсы публиковать файл в производственном приложении (например, браузер отправляет файл в производственное приложение)?

Ответы [ 4 ]

7 голосов
/ 25 декабря 2008

Если вам просто нужно загрузить файлы, я думаю, что бессмысленно использовать плагин для этого. Загрузка файла очень и очень проста.

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

Я думаю, что код довольно понятен, поэтому я не буду его объяснять; )

4 голосов
/ 24 декабря 2008

Конечно, используйте библиотеку net / http ...

http://www.ruby -doc.org / STDLIB / libdoc / сеть / HTTP / RDoc / классы / Net / HTTP.html

но может показаться, что в нем отсутствует многочастное кодирование, поэтому ознакомьтесь с этой другой статьей

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

Проверьте этот похожий вопрос

Ruby: Как опубликовать файл через HTTP как multipart / form-data?

0 голосов
/ 19 июня 2013

Драгоценный камень скрепки - действительно решение. Он работает и в других форматах, и его очень легко внедрить в рельсы. Посмотрите видео .. !!

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

0 голосов
/ 24 декабря 2008

Возможно, вы захотите проверить плагин Paperclip. Очень хорошо для загрузки изображений. Может работать и для других форматов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...