Faradayを使うと簡単にファイルをmultipart形式でPOSTしてアップロードしたりすることができる。
具体的にはUploadIOを使うことで簡単に指定できる。
params = {
file: Faraday::UploadIO.new("file.txt", "text/plain")
}
ただ、送信したいデータを元々変数で持っている場合、この方法だとわざわざ一度ファイルに保存して送信しなければならない。テキストやRuby上で生成したCSV、ネットワーク経由で画像などはファイルでなく変数に持っているだけの場合も多いと思う。その場合はなんとなく面倒だし冗長。
この場合、UploadIOのソースを見てみたところIOであれば問題ないようなので下記のようにして文字列をそのまま送信することもできる。
params = {
file: Faraday::UploadIO.new(StringIO.new(text_value), 'text/plain')
}
ソースはこのへん? あとファイル名必要な時どうするのかは知らない。(と思ったらここのソースになんか書いてある)
https://github.com/socketry/multipart-post/blob/master/lib/composite_io.rb#L75
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント