我正在开发一个图像主机,并希望将图像从我的网络内容上传到单独的服务器,例如: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
。
任何人都有这方面的经验,可以推荐一个行动方案吗?谢谢!
答案 0 :(得分:1)
请勿上传到影像服务器。这些特定于内容的服务器应该针对提供内容进行优化,而不必处理消费内容。
让上传表单发送到您主站点的服务器。然后,您可以使用其他协议将上载的文件传输到映像服务器。 rsynch,scp等...这样你就可以在一个位置拥有所有“控制”代码,而不必担心在多个服务器之间同步数据库和所有数据 - 所有数据都保存在主服务器上,并且图像服务器只是被动地吐出图像数据。
答案 1 :(得分:0)
我建议将这两个想法脱钩。首先,将映像上传到您的服务器,并在单独的进程(可能是预定的cron)中将映像移动到其他服务器。您可能不希望用户等待两次上传完成。
答案 2 :(得分:0)
就像其他人所说的那样,你所做的并不是最佳的。如果您真的想继续这样做,我建议将表单提交给PHP脚本,然后处理它并将文件放在需要的位置,然后将所有信息保存到数据库中。您需要评估从一台服务器到另一台服务器的数据传输的最佳协议。您最终可能会使用Curl,您可以了解here和here以及curl docs
答案 3 :(得分:0)
您可以将图片上传到图片主机,然后将其重定向回您的网站。一种方法是在表单中添加隐藏的“成功”和“失败”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) ;
}
?>