Как загрузить фотографию на flickr с помощью RoR?

#ruby-on-rails #forms #file-upload #flickr

#ruby-on-rails #формы #загрузка файла #flickr

Вопрос:

Я использую Flickraw в своем тестовом приложении

Следуйте примеру,

Я могу загрузить файл, указав путь к файлу, но я хочу использовать помощник form_tag

Это мое мнение

 = form_tag :upload_photo_to_Flickr , :multipart => true do 
= hidden_field_tag :token, @upload_info[:token] 
= label_tag "PHOTO" 
= file_field_tag :photo 
= submit_tag "Upload Photo" 
  

Контроллер является

  def upload_photo_to_Flickr
    file_path = params[:photo]
    flickr.upload_photo file_path , :title => "please" , :description=>"successfully"
 end 
  

Отображается сообщение об ошибке ArgumentError (неверное количество аргументов (1 вместо 0))

И я также пробую другой метод, используя read ,

  def upload_photo_to_Flickr
    file_path = params[:photo].read
    flickr.upload_photo file_path , :title => "please" , :description=>"successfully"
 end 
  

Отображается сообщение об ошибке ArgumentError (строка содержит нулевой байт)

Параметры

 {"photo"=>#<ActionDispatch::Http::UploadedFile:0x10ba37648 
  @original_filename="test.jpg",
  @tempfile=#<File:/var/folders/wy/5yx_py3s02g8l0kw0frrpg_m0000gn/T/RackMultipart20111110-   
   1832-18ufrmm-0>,
  @headers="Content-Disposition: form-data; name="photo"; 
  filename="test.jpg"rnContent-Type: image/jpegrn",
  @content_type="image/jpeg">,

   "commit"=>"Upload Photo 350201236",
   "token"=>"XXXX",
   "authenticity_token"=>"o9PhVeE6u1MGfol/PvGQkLE8RCL5tJat 1AQlygGOKc=",
   "utf8"=>"342234223"
}
  

Как получить путь к файлу?

Потому что это может работать следующим образом

 def upload_photo_to_Flickr
  file_path = "/Desktop/test.jpg"
  flickr.upload_photo file_path , :title => "please" , :description=>"successfully"
end 
  

Или я должен попробовать другой метод, чтобы получить путь к файлу вместо form_tag?

Ответ №1:

Я нахожу решение!

В контроллере, используя

flickr.upload_photo(параметры [:photo].tempfile.path)