【问题标题】:Image hosting with multiple servers具有多台服务器的图像托管
【发布时间】:2011-08-06 03:33:32
【问题描述】:

我正在开发一个图像主机并希望将图像从我的网络内容上传到单独的服务器,例如:http://i1.mysite.com 而不是http://mysite.com/uploads。但是我在弄清楚如何做到这一点时遇到了一些麻烦。

假设我有这个表格:

<form action="http://mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
</form>

这会将图像文件发送到/upload,在那里我可以验证文件并保存它,但这将与网站托管在同一台服务器上,而不是专用存储服务器上。如果不将图像上传到与我的网站相同的服务器上,如何实现我想要的效果?

我总是可以做到的:

<form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
</form>

这会将图像文件发送到另一台服务器,但是当图像上传完成后,我将被重定向到http:/i1.mysite.com/upload

谁有这方面的经验并且可以推荐一个行动方案?谢谢!

【问题讨论】:

    标签: php file-upload load-balancing


    【解决方案1】:

    不要上传到图片服务器。此类特定于内容的服务器应针对提供内容进行优化,而不必处理消费内容。

    让上传表单发送到您的主站点的服务器。然后,您可以使用其他协议将上传的文件传输到图像服务器。 rsynch、scp 等... 这样您就可以将所有“控制”代码放在一个位置,而不必担心在多台服务器之间同步数据库等 - 所有数据都保存在您的主服务器上,并且图像服务器只是被动地吐出图像数据。

    【讨论】:

      【解决方案2】:

      我建议将这两个想法分开。首先,将图像上传到您的服务器,然后在一个单独的进程(可能是计划的 cron)中将图像移动到其他服务器。您可能不希望用户等待两次上传完成。

      【讨论】:

        【解决方案3】:

        就像其他人所说的那样,您尝试做的并不是最佳的。如果您真的想继续这样做,我建议将表单提交给 PHP 脚本,然后由 PHP 脚本处理它并将文件放置在需要的位置,然后将任何必要的信息保存到数据库中。您需要评估从一台服务器到另一台服务器的数据传输的最佳协议。您可能最终会使用 Curl,您可以了解 herehere 以及 curl docs

        【讨论】:

        • 我应该补充一点,您将有一个表单将所有内容提交给 PHP 脚本,然后拆分出所有内容。
        【解决方案4】:

        您可以将图像上传到您的图像主机,然后将其重定向回您的网站。一种方法是在表单中添加隐藏的“成功”和“失败”URL 输入:

        <form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
            <input type="file" name="image" id="file_upload" />
            <input type="submit" value="Upload" id="upload_submit" />
            <input type="hidden" name="success" value="http://mysite.com/success" />
            <input type="hidden" name="failure" value="http://mysite.com/failure" />
        </form>
        

        您的图片主机上的上传脚本将在成功上传后重定向到提供的 URL:

        <?php
            .. handle uploaded file ..
        
            if ($success) {
                header ('Location: ' . $_REQUEST ['success']) ;
            }
            else {
                header ('Location: ' . $_REQUEST ['error'] . '?message=' . $message) ;
            }
        
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-12
          • 2021-09-23
          • 2020-08-27
          • 1970-01-01
          • 2014-01-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多