php ftp 文件下载总是 0 字节大小

问题描述 投票:0回答:1

是的,我已阅读所有其他与此相关或类似的帖子。

每当我单击从 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
部分是我从这里的另一篇文章中获得的,不是我自己的。我替换了我的目录和文件名

php ftp
1个回答
0
投票

正如 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']);

现在它运行完美。谢谢马丁

© www.soinside.com 2019 - 2024. All rights reserved.