2019-07-09に更新

Faradayで変数内のデータをファイルとして送信する

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開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント