2012-12-05 9 views
2

Я пытаюсь выполнить Net :: HTTP: POST :: Multiport и отправить некоторый текст в формате файла в API.Net :: HTTP :: Post :: Параметр многофакторного файла с файлом на лету

Я получаю данные из своей базы данных, и я не хочу создавать физические файлы, я хочу создать файл «на лету» с данными и отправить его в API. Сейчас у меня есть

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 }) 

Здесь file должен быть файл объект, который я прочитал с диска или IO согласно http://rubydoc.info/gems/multipart-post/1.1.0/UploadIO#initialize-instance_method, любая идея, как я могу просто создать JSON IO с кучей строк, без нужно создать файл и написать ему?

Также любая идея, как я могу это сделать через httmultiparty?

ответ

1

Да, вы можете сделать это «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 и добавить следующий код -

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

Вы можете предоставить созданный файл временного пути. –

 Смежные вопросы

  • Нет связанных вопросов^_^