Ruby: 暂存远程文件
Ruby: Temporarily store remote file
我正在尝试 post 一个文件到我使用 CarrierWave 远程存储的 API。
使用尚未通过 CarrierWave 上传的本地文件效果很好:
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
keystore: File.new(Rails.root.join('file.keystore'))
}), symbolize_names: true)[:id]
=> 312199
以下是我尝试在本地临时存储文件的方法:
response = HTTParty.get model.file.url
f = Tempfile.new SecureRandom.hex
f.binmode
f.write response.body
f.flush
f.close
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
keystore: File.new(f)
}), symbolize_names: true)[:id]
RestClient::BadRequest: 400 Bad Request
我检查了临时文件和 file.keystore
具有相同的内容。
我做错了什么?
如果您的 api 取决于文件名 file.keystore
但您不关心保存文件为什么不写一个文件 post 它,然后删除文件?
response = HTTParty.get model.file.url
file = File.open('file.keystore', 'w') do |f|
f.binmode
f.write response.body
end
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
keystore: 'file.keystore'
}), symbolize_names: true)[:id]
File.delete('file.keystore')
我正在尝试 post 一个文件到我使用 CarrierWave 远程存储的 API。
使用尚未通过 CarrierWave 上传的本地文件效果很好:
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
keystore: File.new(Rails.root.join('file.keystore'))
}), symbolize_names: true)[:id]
=> 312199
以下是我尝试在本地临时存储文件的方法:
response = HTTParty.get model.file.url
f = Tempfile.new SecureRandom.hex
f.binmode
f.write response.body
f.flush
f.close
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
keystore: File.new(f)
}), symbolize_names: true)[:id]
RestClient::BadRequest: 400 Bad Request
我检查了临时文件和 file.keystore
具有相同的内容。
我做错了什么?
如果您的 api 取决于文件名 file.keystore
但您不关心保存文件为什么不写一个文件 post 它,然后删除文件?
response = HTTParty.get model.file.url
file = File.open('file.keystore', 'w') do |f|
f.binmode
f.write response.body
end
JSON.parse(RestClient.post("https://build.phonegap.com/api/v1/keys/android", {
keystore: 'file.keystore'
}), symbolize_names: true)[:id]
File.delete('file.keystore')