直接从后端服务器传递jpg文件

时间:2017-01-12 00:55:41

标签: ruby heroku sinatra

我正在通过JSON将我的应用程序中的图像文件上传到由Heroku托管的ruby后端。然后它应该通过他们的宝石通过我上传的图像的路径传递给条纹。是否可以将它传递给临时文件?条纹文档说:

Stripe::FileUpload.create(
  :purpose => 'dispute_evidence',
  :file => File.new('/path/to/a/file.jpg')
)

我的后端帖子看起来像:

post '/account/id' do
    tempfile = params[:file][:tempfile]
    filename = params[:file][:filename]
    path = "#{tempfile.path}/#{filename}"

    p path      -->    "/tmp/RackMultipart20170112-4-fgtv2n/photoID.jpg"

    begin
        file = Stripe::FileUpload.create({
                :purpose => params[:purpose],
                :file => File.new(path)
            },
            {
                :stripe_account => params[:stripe_account]
            }
        )
    rescue Stripe::StripeError => e
        status 402
        return "Error saving verification id to account: #{e.message}"
    end
    status 200
    return file.to_json
end

但在跑步时我得到:

Errno::ENOENT - No such file or directory @ rb_sysopen - /tmp/RackMultipart20170112-4-1qmr03y/photoID.jpg:

我无法弄清楚我做错了什么。任何人都可以帮助或提出更好的选择吗?

1 个答案:

答案 0 :(得分:0)

您误将tempfile误认为是某个目录。 tempfile实际上是您的临时文件,因此请将其传递给path(您不再需要)。