概要
API経由でBase64エンコードされたデータを、指定サーバにアップロードするようなケースを想定してます。
必須Gem
$ gem install net-scp
サンプル
# coding: utf-8
require 'tempfile'
require 'net/scp'
require 'base64'
contents = Base64.encode64("contents")
save_path = "/var/tmp/test.txt"
host = "localhost"
user = "username"
password = ""
Tempfile.create("upload") do |tf|
tf.binmode
tf.write(Base64.decode64(contents))
tf.rewind
file_size = tf.size
Net::SCP.start(host, user,
password: password) do |scp|
scp.upload! tf.path, save_path
end
end
- Tempfileを利用し、一時ファイルからサーバへ直接ファイルを送信
- 一時ファイルに書き込む際に、デコードを行う
- 保存先のファイル名は、APIから送信されてきたファイル名を用いる等の工夫は必要