代码之家  ›  专栏  ›  技术社区  ›  Pavel K.

回形针从哪里得到原始文件的名称?

  •  10
  • Pavel K.  · 技术社区  · 14 年前

    我开始使用nginx上传模块(它创建像/tmp/000121545这样的上传文件),但我需要在保存文件时使用原始文件名的回形针(像/public/avatars/luckyluke.jpg)

    在之前的参数中,rails只是通过

     "avatar"=>#<File:/tmp/RackMultipart20100413-6151-t3ecq0-0> 
    

    也没有原始文件名,所以我想知道它是从哪里来的回形针?我试过浏览插件代码,但目前对我来说有点太复杂了。

    1 回复  |  直到 9 年前
        1
  •  19
  •   mckeed    14 年前

    浏览器发送一个带有文件名的http头。(“内容配置:filename=original_file.jpg”)

    Rails将此作为临时文件对象的实例方法提供: params[:avatar].original_filename ,回形针就用这个。

    具体来说,rack解析rack::utils::multipart::uploadedfile中的multipart表单,并在包含 :tempfile :filename . 然后actionDispatch::http::upload出现,并用file对象(值:tempFile)替换该散列,用模块actionDispatch::http::uploadedFile扩展它,该模块为 original_path 以及方法 original_filename .