我开始使用 nginx 上传模块(它创建上传文件,如 /tmp/000121545),但我需要回形针在保存文件时使用原始文件名(如 /public/avatars/LuckyLuke.jpg)
之前Rails 传递的参数只是
"avatar"=>#<File:/tmp/RackMultipart20100413-6151-t3ecq0-0>
也没有原始文件名,所以我想知道它是从哪里来的回形针?我尝试查看插件代码,但目前对我来说有点太复杂了。
浏览器发送带有文件名的 http 标头。 (“内容处置:文件名=original_file.jpg”)
Rails 将此作为临时文件对象的实例方法提供:params[:avatar].original_filename
,回形针就用它。
具体来说,Rack 解析 Rack::Utils::Multipart::UploadedFile 中的多部分形式,并将哈希值放入参数中,其中包括:tempfile
and :filename
。然后 ActionDispatch::Http::Upload 出现,并用 File 对象(:tempfile 的值)替换该哈希,并使用 ActionDispatch::Http::UploadedFile 模块对其进行扩展,该模块添加了一个实例变量original_path
和方法original_filename
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)