1

我有一个简单的表单,当回传时,它会调用一个函数来启动下载。路径和文件名是从数据库中提取的,然后我使用标题开始下载。我的下载代码是:

//START DOWNLOAD
header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="'.$FILE_PATH.$FILE_NAME.'"');
header("Content-Transfer-Encoding: binary");
header("Connection: close") 

在上面的示例中,$FILE_PATH 变量是 /downloads/software/,$FILE_NAME 变量是 client-installer.exe。所以,我期望的是一个名为 client-installer.exe(大约 70MB)的文件被下载到客户端。相反,我得到一个名为 _downloads_software_client-installer.exe 的文件,大小约为 10KB。

我想也许我需要对文件路径/名称进行urlencode,但这也不能解决问题。所以我想也许我的标题有问题但似乎找不到它。

谢谢!

4

1 回答 1

1

文件名标头仅表示应该调用的文件。它必须只包含一个文件名,而不是一个路径。服务器硬盘上的内部路径与客户端无关,也不感兴趣。您的服务器必须在响应中输出实际的文件数据,客户端无法从给定路径的服务器中获取它。

readfile

于 2012-12-04T19:42:45.100 回答