【问题标题】:Uploading a local file to remote server with PHP and FTP使用 PHP 和 FTP 将本地文件上传到远程服务器
【发布时间】:2013-07-29 11:34:12
【问题描述】:

我一直在尝试制作一个可以上传大文件的系统,最初我使用的是 HTTP,但这有一些需要更改的设置问题。所以我想我会尝试使用 FTP。

现在我在 PHP 中有一个 ftp 连接,它可以查找,我可以查看文件夹和文件以及创建目录,但我似乎无法弄清楚如何获取本地文件并上传它.

我一直在阅读大量信息和教程,例如 PHP 手册和我在 nettuts 上找到的教程,但我正在努力做到这一点。教程说你可以上传一个本地文件,但我一定是遗漏了一些东西。

这是我正在使用的上传方法:

public function uploadFile ($fileFrom, $fileTo)
    {
        // *** Set the transfer mode
        $asciiArray = array('txt', 'csv');
        $extension = end(explode('.', $fileFrom));
        if (in_array($extension, $asciiArray)) 
            $mode = FTP_ASCII;      
        else 
            $mode = FTP_BINARY;

        // *** Upload the file
        $upload = ftp_put($this->connectionId, $fileTo, $fileFrom, $mode);

        // *** Check upload status
        if (!$upload) {

                $this->logMessage('FTP upload has failed!');
                return false;

            } else {
                $this->logMessage('Uploaded "' . $fileFrom . '" as "' . $fileTo);
                return true;
            }
    }

当我尝试上传文件时,我使用这个:

$fileFrom = 'c:\test_pic.jpg';

$fileTo = $dir . '/test_pic.jpg';

$ftpObj -> uploadFile($fileFrom, $fileTo);

我认为这会从我的机器中获取存储在 c: 中的文件并将其上传到目的地,但它失败了(不知道为什么)。所以我稍微改了一下,改了$fileFrom = test_pic.jpg,然后把图片放到远程服务器的同一个文件夹里。当我运行此代码时,脚本将文件从一个位置复制到另一个位置。

那么我将如何从本地机器获取文件并发送到服务器?

提前致谢。

【问题讨论】:

    标签: php ftp


    【解决方案1】:

    使用这个你可以从你的 PHP 服务器上传一个文件到你的 FTP 服务器,实际上这似乎不是你的目标。

    创建一个提交到这个 PHP 文件的上传表单。将此文件暂时存储在您的服务器上,然后从那里上传到您的 FTP 服务器。

    如果您的尝试确实有效,这将是一个主要的安全问题,因为 PHP 文件可以访问我本地计算机上的任何文件。

    【讨论】:

    • 我明白了,我想我看错了。那么我是否正确地说我仍将通过 HTTP 将文件发送到我的服务器?