将图片上传到远程服务器。PHP

3

我负责图片托管,遇到了问题...

我有三台服务器。

第一台 - 网站/脚本

另外两台用来存储图片。

我该如何将从“一”号服务器(脚本)上传的图片传输到第二和第三台服务器?

<?php
    if (isset($_POST['upload']))
    {
        $blacklist = array('.php', '.phtml', '.php3', '.php4', '.php5');
        foreach ($blacklist as $item)
        {
            if(preg_match('#' . $item . '\$#i', $_FILES['file']['name']))
            {
                echo "We do not allow uploading PHP files\n";
                exit;
            }
        }

        $uploadDir  = PROJECT_ROOT . 'upload/'; // 1ST SERVER (THIS SERVER)
        $uploadFile = $uploadDir . basename($_FILES['file']['name']);

        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile))
        {
            echo "File is valid, and was successfully uploaded.\n";
        }
        else
        {
            echo "File uploading failed.\n";
        }
    }    
?>
<form name="upload" method="post" enctype="multipart/form-data">
    Select the file to upload: <input type="file" name="file"/>
    <input type="submit" name="upload" value="upload"/>
</form>

你在这里想要实现什么?你是想要尝试在三个服务器之间同步图片,还是...? - John Parker
@middaparka,我做图像托管。当您加载一张图片时,它应该被放在其中的任意一个服务器上。3个服务器需要卸载通道。以后会有更多的服务器。 - Isis
2
我不确定你所说的“卸载通道”的含义。不过,如果你想要在所有三台服务器上复制一张图片,我会倾向于使用像 rsync 这样的工具。 - John Parker
3个回答

4

0

您可以使用Zend_Http Client通过HTTP上传文件到其他服务器,就像HTML上传表单那样。您可以在“文件上传”部分找到所需的所有信息:http://www.zendframework.com/manual/en/zend.http.client.advanced.html

开始之前,您还应该阅读这篇文章:

http://www.zendframework.com/manual/en/zend.http.client.html

你需要的代码基本上是:

require_once('Zend/Http/Client.php');
$client = new Zend_Http_Client("http://serverurl/path");
$client->setFileUpload(...);
$client->request();

0

如果您已经在其他服务器上运行了HTTP服务器,请使用cURL。用法:

  1. 调用curl_init
  2. 调用curl_setopt
  3. 调用curl_exec

可以使用curl_setopt配置HTTP请求。特别感兴趣的选项是CURLOPT_URL、CURLOPT_POST和CURLOPT_POSTFIELDS。


也就是说,您必须在另外两台服务器上提供脚本托管,并且第一台使用Curl发送图像? - Isis
@Isis 我假定你已经有了那个。如果你没有,就按dqhendricks的建议使用FTP或其他一些其他服务器已经提供的协议。 - Oswald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接