params[:file].path 没有方法 sinatra

params[:file].path has no method sinatra

你好,我使用 post 方法向我的服务器发送一个带有文件的请求 文件到了,但我想获取打开它的命令路径,但是当我使用

获取文件时

params[:file].path

它说散列没有方法 所以现在我知道这是一个散列而不是文件,有没有办法将这个散列转换为我需要的文件?

我的请求是这样的:

{
    "utf8"=>"✓",
    "authenticity_token"=>"vsp2/5YCM9OBFjXASnpnXNmi4oYVlbAEeUhHQzpRd4w=",
    `"file"=>`{
        : filename=>"mass_email.csv",
        : type=>"text/csv",
        : name=>"file",
        : tempfile=>#<File: /tmp/RackMultipart20150422-8224-1vm8siy.csv>,
        : head=>"Content-Disposition: form-data; name=\"file\"; filename=\"mass_email.csv\"\r\nContent-Type: text/csv\r\n"
    },
    "commit"=>"Send Mass Email",
    "from"=>{
        "0"=>"\"balblabla\" <email@ik.com>"
    },
    "subject"=>{
        "0"=>"asdasda"
    },
    "template"=>{
        "0"=>"sdasdasdaojoasdijoisjdcxvb"
    }
}

此外,如果您知道我如何更改此请求的到达方式,并在所有地方添加额外的 \\,这将非常有帮助

要访问文件名,请使用

filename = params[:file][:filename]

访问文件使用

file = params[:file][:tempfile]