ftp_put上传一个空文件

问题描述 投票:4回答:5

我正在尝试通过ftp_put将文件上传到Windows服务器。

我的代码如下:

    $date           = date('ymd');
    $file_name      = $date.'.csv';
    $file_location  = 'D:/inetpub/wwwroot/website.com/html/assets/'.$file_name;

//set up basic connection
$conn_id = ftp_connect(FTP_HOST, FTP_PORT);

// login with username and password
$login_result = ftp_login($conn_id, FTP_USER, FTP_PASS);

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!"; 
    exit;
}  else { 
    echo "Connected to FTP Server";
}

$upload = ftp_put($conn_id, $file_name, $file_location, FTP_ASCII);

// check upload status
if (!$upload) { 
    echo "FTP upload has failed!"; 
} else { 
    echo "File Uploaded";
}

// close the FTP stream 
ftp_close($conn_id); 

如果我使用filezilla手动上传文件,它可以很好地工作。如果我使用上面的代码,它会创建一个空文件。

php ftp
5个回答
12
投票

尝试在启用被动模式的情况下传输文件:

Passive Mode


7
投票

尝试使用FTP_BINARY而不是像这样的FTP_ASCII。

$upload = ftp_put($conn_id, $file_name, $file_location, FTP_BINARY);

PHP ftp可能有问题,但我发现它几乎可以在二进制传输模式下工作。


1
投票

事实证明,UKFast阻止了连接和转移。 (它们还要求它仅为活动模式)。

现在他们已经解锁了它,它运作得很好。 (在它出现之前)


1
投票

打开被动模式

  ftp_pasv($conn_id, true);

0
投票

感谢“Khan Muhammad”的回答,当我添加这个部分时:

ftp_pasv($ conn_id,true);

该文件已完美上传。

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