是的,我已阅读所有其他与此相关或类似的帖子。
每当我单击从 ftp 服务器下载文件时,它都会下载该文件,但大小始终为 0 字节。文件类型可能有所不同:
.jpeg
、.jpg
、.pdf
、.odt
等
<?php
$conn_id = ftp_connect( "myftpserver.org" );
$login_result = ftp_login ( $conn_id, "uname", "pword" ) ;
$size = ftp_size ( $conn_id, $_REQUEST['downloadDir']."/".$_REQUEST['file'] ) ;
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename($_REQUEST['file']) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($size));
readfile("ftp://myftpserver.org".$_REQUEST['downloadDir']."/".$_REQUEST['file']);
exit;
?>
注意:
header
部分是我从这里的另一篇文章中获得的,不是我自己的。我替换了我的目录和文件名
正如 Martin Prikryl 指出的那样,以下位置没有登录凭据:
readfile("ftp://myftpserver.org".$_REQUEST['downloadDir']."/".$_REQUEST['file']);
我将其更改为:
readfile('ftp://'.$ftp_user_name.':'.urlencode($ftp_user_pass).'@'.$ftp_server.'/'.$_REQUEST['downloadDir']."/".$_REQUEST['file']);
现在它运行完美。谢谢马丁