如何解决如何使用位置选择选项下载文件
|| 我将文件从服务器下载到本地计算机,如下所示:$file = ( \"TestFile.txt\" );
header( \"Content-Type: application/octet-stream\" );
header( \"Accept-Ranges: bytes\" );
header( \"Content-Length: \" . filesize( $file ) );
header( \"Content-disposition: attachment; filename=testfile.txt\" );
readfile( $file );
它正在工作,但始终在不询问位置的情况下将文件保存在下载文件夹中。我想打开一个窗口,如将任何文档保存在OpenOffice / MS Word中,并带有选择文件系统上任何位置并创建新文件夹的选项。当我们在浏览器窗口中另存为时,我期望的窗口也会出现。
希望你理解我的问题。是否有可能做到这一点,使其在所有浏览器/ OS中都能正常工作。
谢谢
解决方法
Content-Disposition的规范表明,接收用户代理应忽略filename参数值中的任何路径组件:
接收方[用户代理]不应考虑文件名参数中似乎存在的任何目录路径信息。文件名应仅被视为终端组件。
其原因是它容易产生安全漏洞:
由于此备忘录为发件人提供了建议文件名的方法,
接收方[用户代理]必须注意发件人的建议文件名
不代表危险。以UNIX为例,存在一些危险
将会:
创建启动文件(例如\“
.login
\”)。
创建或覆盖系统文件(例如\“/etc/passwd
\”)。
覆盖任何现有文件。
将可执行文件放置到任何命令搜索路径中(例如\“~/bin/more
\”)。
将文件发送到管道(例如\“| sh
\”)。
, 您没有建议的事情。客户端(即Web浏览器)将如何处理HTTP响应,尤其是如何处理不可显示的内容(例如“ѭ5”),这取决于客户端。大多数浏览器都提供下载选项,但不要求它具有任何特定形式。传递建议的文件名大约与当前浏览器将解释的一样多。
当然,总会有一个定制的浏览器可以接受附加的标题信息,但是目前没有广泛的浏览器可以使用。请记住,一般而言,我们不希望将有关客户端环境的任何信息公开给Internet,因此即使建议诸如下载路径之类的行为也可能被视为违反此规定。想象一下,我建议将“ 2”作为所需的位置。
如果您真的想嗅探访问者的硬盘,请使用ActiveX或Java小程序:-)
, 不是直接通过标头,而是可以使用Java小程序,也可以使用Flash来完成这项工作。
http://www.javaatwork.com/java-download-applet/details.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。