2012-12-05 1 views
2

에 파일을 여러 부분 파일 매개 변수 : POST :: 멀티를하고 API에 파일 형식의 텍스트를 보낼 수 있습니다.순 : HTTP : 포스트 :: 나는 인터넷 : HTTP 할 노력하고있어 즉시

데이터베이스에서 데이터를 가져오고 실제 파일을 만들고 싶지 않습니다. 데이터를 사용하여 즉시 파일을 만들어 API로 보내려고합니다. 은 지금은 내가 디스크 또는 IO에서 읽은 파일 객체 있어야하는데 여기 file

request = Net::HTTP::Post::Multipart.new("my/path", 
              { "file" => UploadIO.new(file, "text/plain", file.path), 
              "merge" => false, 
              "ignore_missing" => false, 
              "label" => "", 
              "low_priority" => false }) 

http://rubydoc.info/gems/multipart-post/1.1.0/UploadIO#initialize-instance_method에 따라, 난 그냥 문자열의 무리에서 JSON IO를 만들 수있는 방법을 어떤 생각없이 파일을 만들고 그것에 쓰는 것?

또한 어떻게 생각합니까? httmultiparty을 통해이 작업을 수행 할 수 있습니까? 모델에서

class SomeController < ApplicationController 
    def send_file 
     response = Foo.post('/', :query => { 
        :file => File.new('abc.txt') # Generate your file here 
     }) 
     # here Foo is class_name which is present in model/foo.rb 
     response.code # it give response code success or failure. 
    end 
end 

그냥 모든 파일을 foo.rb을하자 다음 코드를 추가 - -

답변

1

예 당신이 당신의 컨트롤러 방법에서 "httmultiparty"
에 의해 그것을 할 수 있습니다 단지 추가

require 'httmultiparty' 
class Foo 
    include HTTMultiParty 
    base_uri 'my/path' #url where to send file 
end 

params[:file]을 수행하면 경로에 파일이 표시됩니다. 나는 이것이 당신을 도운다고 생각합니다.

+0

실제로 abc.txt는 내 파일을 생성하지 않고 이미 디스크에있는 파일을로드합니다. 내 문제는 – Matilda

+0

이므로 File.new ('abc.txt', 'w')는 파일을 생성합니다. , 그러나 그것은 또한 파일을 디스크에 씁니다. 나는 피하려고합니다. – Matilda

+0

거기에 생성 된 임시 파일 경로를 제공 할 수 있습니다. –

관련 문제