繁体   English   中英

使用Web浏览器下载文件的PHP脚本

[英]PHP script to download file using web browser

我正在一个小项目上,使用基于Web的查询从ftp服务器下载文件。 我已经创建了一个HTML表单作为前端,该表单从用户那里获取ftp服务器名称和文件名,然后与php脚本进行交互,以与ftp服务器连接并下载指定的文件。 我已经将html和php文件都保存在大学的Web服务器上。 当我直接从服务器通过命令行运行PHP脚本时,可以在运行Web服务器的计算机上下载文件。 但是我无法使用网络浏览器在本地计算机上下载文件。

| 在本地计算机上运行的Web浏览器| <-无法下载文件-> | 我的PHP脚本在Web服务器上运行| <-能够下载文件-> | FTP服务器|

<?php
$targetFile = 'file.txt';
$curl = curl_init();
$fh = fopen(dirname(__FILE__) . '/'.$targetFile,'w+b');
if ($fh == FALSE){ 
      print "File not opened<br>"; 
           exit; 
}

echo "<br>configuring curl...<br>";

curl_setopt($curl, CURLOPT_URL, "ftp://full_path_name_of_file");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_FILE, $fh);
curl_exec($curl);
echo curl_error($curl);
curl_close($curl);
fclose($fh);
?>

当我从服务器计算机的命令行运行此php脚本时,文件下载成功。 但是,当我使用个人计算机从Web浏览器调用脚本时,出现错误“文件未打开”。

您能告诉我有什么方法可以通过网络浏览器下载文件吗?

谢谢!

  1. 这可能是文件所有权问题

    请检查文件的权限和所有权。

    为了更好地调试它,您可以使用此处提供的部分脚本:

    https://stackoverflow.com/a/10377285/1163786

  2. 检查PHP配置

    CLI的php配置和Web服务器的php配置之间有区别。 与CLI相比,后者可能会有一些限制。 请比较或比较文件(以查看配置差异)。

  3. 下载本身未启动

    该脚本通过curl从ftp服务器下载文件并将其存储到Web服务器上的文件夹中,但是您既没有将浏览器(客户端)指向下载的文件,也没有从脚本启动浏览器的下游功能。

    我要添加一个检查,即未从CLI调用该脚本,然后将标头转发到下载的文件。

     if(PHP_SAPI !== 'cli') { header("Location: WWW_URL_SERVER . $path_to . $targetFile); } 

    您可以使用浏览器中的“直接链接”来启动下载,从而独立测试下载。 这又是一个权限,这一次Web服务器本身会提供静态文件并需要权限才能这样做。

    参考: 在PHP中完成处理后重定向页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM