2012-08-27 4 views
4

나는 이미지가있는 오래된 서비스와 새로운 서비스를 가지고 있습니다. 이미지를 이전 이미지에서 새 이미지로 이전하고 싶습니다. 그것을 위해 나는 나의 오래된 서비스에서 이미지를 얻고 새로운 sinatra 서비스에 그것을 게시해야합니다. 나는 내가 내시나 서비스에서 위의 포스트 방법으로 얻을매개 변수로 패러디가있는 이미지 게시

params = {"image"=> 
    {:filename=>"Belgium.jpg", :type=>"image/jpeg",:name=>"image",:tempfile=> #<File:/var/folders/h7/f9cvygqs3lg78kwh24v8yzp80000gn/T/RackMultipart20120827-76057-1f3inkn>, 
:head=> "Content-Disposition: form-data; name=\"image\";filename=\"Belgium.jpg\"\r\nContent-Length: 28228\r\nContent-Type: image/jpeg\r\nContent-Transfer-Encoding: binary\r\n"}, 
    "id"=>"4234"} 

있습니다 NET : HTTP

url = URI.parse('http://0.0.0.0:9292/') 
    File.open("./Belgium.png") do |jpg| 
    req = Net::HTTP::Post::Multipart.new url.path, {"image" => UploadIO.new(jpg, "image/jpeg", "Belgium.jpg"), id:4234} 
    res = Net::HTTP.start(url.host, url.port) do |http| 
     http.request(req) 
    end 
    end 

params 객체를 파라미터를 사용하여 원하는 형식으로 이미지를 게시 할 수 있었다 그러나 나는하지 않았다 패러데이로 같은 결과를 얻을 수 있습니다.
"# < 'UploadIO : 0x007fb950373de8>"개체 나는 이런 식으로 뭔가를 얻을 내 서비스에서

payload = { :profile_pic => Faraday::UploadIO.new('avatar.jpg', 'image/jpeg') } 
Faraday.post 'http://0.0.0.0:9292/', payload 

: 나는 같은 것을 사용했습니다. 이것은 내 서비스에서 기대하는 것이 아닙니다.

Net : HTTP와 동일한 동작을 어떻게 얻을 수 있습니까? 나는 그것이 미들웨어로 무엇인가를 할 것이라고 생각한다, 나는 주변을 조정하려고 노력했다. 그러나 나는 아직 초보자 다.

답변

7

무엇에 대해 :

conn = Faraday.new(:url => 'http://0.0.0.0:9292') do |faraday| 
    faraday.request :multipart 
end 
payload = { :profile_pic => Faraday::UploadIO.new('avatar.jpg', 'image/jpeg') } 
conn.post 'http://0.0.0.0:9292/', payload