Ruby on rails Ruby:临时存储远程文件
我试图将一个文件发布到一个API,我使用CarrierWave远程存储了这个API 使用CarrierWave使用尚未上载的本地文件效果良好:Ruby on rails Ruby:临时存储远程文件,ruby-on-rails,ruby,file,carrierwave,temporary-files,Ruby On Rails,Ruby,File,Carrierwave,Temporary Files,我试图将一个文件发布到一个API,我使用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] => 3121
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
我检查了temp文件和file.keystore
是否具有相同的内容
我做错了什么?如果您的api依赖于文件名是
file.keystore
,但您不关心文件的持久性,为什么不写一个文件,发布它,然后删除该文件
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')
我猜是
https://build.phonegap.com/api/v1/keys/android
需要名为file.keystore的文件名
?如果文件内容相同,还有什么其他解释呢?你说得对。这很明显。非常感谢。