我知道我们应该替换正斜杠,例如分解路径并使用数组的最后一个元素作为文件名。
但是为什么福特沃德斜杠在使用时会转换为连字符/破折号
header('Content-Disposition: attachment; filename="'.$local_file.'"');
当$local_file
像/file
下载的文件文件名为 -file
这种行为是否在某处描述过?
RFC文件没有提到这一点,还是吗?http://www.faqs.org/rfcs/rfc2183.html
特定于客户端的。大多数浏览器只会删除任何路径/
前缀。但是转码正斜杠也同样合理。
在 RFC2616, http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html, 第 19.5.1 节中提到了它
接收用户代理不应尊重 filename-parm 参数中存在的任何目录路径信息,这是目前唯一被认为适用于 HTTP 实现的参数。文件名应仅被视为终端组件。
网络工作组,R. Fielding等人,(c)互联网协会(1999年)
当然,基本原理是,出于安全原因,不应将HTTP有效负载提取到任何预定义的路径。