Может ли кто-нибудь объяснить мне, как загружать файлы RESTful способом в приложение Rails?
Я экспериментировал с curl для имитации загрузки изображения в контроллер rails. Сначала я получил ошибки токена подлинности и отключил их, а затем попытался
curl -F "uploaded_picture=@koi.gif" http://localhost:3000/photos/create
но это не сработало, и я получаю сообщение об ошибке "Вы можете загружать только фотографии".
Я предполагаю, что это как-то связано с установкой типа содержимого загружаемого файла, но я не уверен, как это сделать.
Я использую этот код в своем контроллере (взят из книги Agile Rails)
class Photo < ActiveRecord::Base
belongs_to :user
validates_format_of :content_type, :with => /^image/,
:message => "--- you can only upload pictures"
def uploaded_picture=(picture_field)
self.name = base_part_of(picture_field.original_filename)
self.content_type = picture_field.content_type.chomp
self.data = picture_field.read
end
def base_part_of(file_name)
File.basename(file_name).gsub(/[^\w._-]/, '')
end
end
Использование веб-браузера прекрасно работает, с этим кодом просмотра:
<% form_for(@photo_reflection, :html => { :multipart => true } ) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :user_id %><br />
<%= f.text_field :user_id %>
</p>
<p>
<%= f.label :data %><br />
<%= f.file_field("uploaded_picture") %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
Было бы замечательно, если бы кто-нибудь сказал мне, как загружать файлы способом RESTful, не обходя токены аутентичности.