【问题标题】:ftp_put returned TRUE but no file uploadedftp_put 返回 TRUE 但没有上传文件
【发布时间】:2023-03-08 21:09:01
【问题描述】:

尝试使用 HTML 表单和 PHP 将文件上传到 FTP 服务器。我的 HTML 表单是:

<!DOCTYPE html>
<html>
<body>

<form action="uploader.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="files" id="files">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

上传者.php:

<?php
$conn_id = ftp_connect ( 'ftp.mydomain.com' );
$ftp_user_name="<username>";
$ftp_user_pass="<password>";

// login with username and password
$login_result = ftp_login ( $conn_id , $ftp_user_name , $ftp_user_pass );

// check connection
if ((! $conn_id ) || (! $login_result )) {
    echo "FTP connection has failed!" ;
    exit;

} else {
    echo "Connected to for user $ftp_user_name" ;
}

if (empty($_FILES['files']['tmp_name'])) {
    echo "No file!!!!!!!!!";
    die();
}
// upload the file
$upload = ftp_put( $conn_id, "uploads/" , $_FILES['files']['tmp_name'] , FTP_BINARY );

// check upload status
if(!$upload){
    echo "FTP upload has failed!" ;
} else {
    echo "Successfully Uploaded." ;
}
?>

我得到的输出是Successfully Uploaded.,但实际上在服务器中找不到上传的文件。

uploads/ 目录位于同一个 uploader.php 目录中。尝试将其更改为uploads/somename.zip 表明uploads/somename.zip is not a valid directoty

【问题讨论】:

    标签: php file-upload ftp


    【解决方案1】:

    ftp_put 的第二个参数是远程文件的路径,而不是本地目录的路径。

    所以应该是这样的:

    ftp_put($conn_id, "/remote/path/somename.zip", $_FILES['files']['tmp_name'], FTP_BINARY);
    

    此外,您应该使用被动模式。见PHP ftp_put fails

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多