使用 PHP 将文件上传到 FTP 而文件没有损坏

Upload a file to FTP using PHP without the file being damaged

我正在尝试使用 php.

将文件上传到我的 ftp 服务器

如果我使用它,文件加载有效但文件已损坏。我是 php 的初学者,我希望能尽快解决这个问题,感谢您的帮助,感谢您的关注。

这是我用来加载文件的形式,很简单 html.

<!DOCTYPE html>
<html>
<body>

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

</body>
</html>

<?php
    if(isset($_POST["submit"])) {
        $ftp_server = "yourHosting.com";

        $conn_id = ftp_connect($ftp_server) or die("error $ftp_server"); 

        $file = $_FILES['fileToUpload']['name'];

        if (ftp_login($conn_id, 'userHere', 'passwordHere')) {
            echo "<br>Session started.";
            ftp_pasv($conn_id, true);
            ftp_put($conn_id, '../myhosting.com/wp-content/uploads/2019/10/'.$file, $_FILES['fileToUpload']['tmp_name'], FTP_ASCII) or die("Image not uploaded");
        } else {
            echo "<br>Session not started.";
        }

        ftp_close($conn_id);
    }
?>

如果我将名称 tmp_name 更改为文件不会加载的名称,我不知道我会做错什么。

ftp_put($conn_id, '../myhosting.com/wp-content/uploads/2019/10/'.$file, $_FILES['fileToUpload']['name'], FTP_ASCII) or die("Image not uploaded");

FTP_ASCII 更改为 FTP_BINARY

解释:

FTP_ASCII 用于纯文本文件。 FTP_BINARY 适用于任何文件类型,包括纯文本文件。例如。 JPEG 文件本质上是二进制文件。

在幕后,FTP_ASCII 任何遇到空字符(序号 0)都会导致二进制文件的结果丢失。我觉得。

无论如何 FTP_BINARY 应该可以解决您的问题。