Web开发:如何允许用户将文件直接上传到我的CDN(Cachefly)?

时间:2009-10-15 19:06:25

标签: php html image upload ftp

我有一个PHP网络应用程序,允许用户将图像上传到我的网站。我正在使用简单的HTML <form enctype="multipart/form-data">

这样做

然而,我没有将这些图像上传到我的网络服务器 - 我会将这些图像直接上传到我的CDN(Cachefly - 这是另一台服务器)。

这可能......让网络应用程序允许用户将图像直接上传到另一台服务器吗?

如果有帮助,这是我的PHP代码:

$target_path = "/home/www/example.com/uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    // file has been uploaded **LOCALLY**
    // HOWEVER, instead of it being upload locally, I would like the file 
    // to be directly uploaded to the CDN ('other' server)
    ...
} else{
    // error: file did not get uploaded correctly
    ....
}

6 个答案:

答案 0 :(得分:5)

我认为在CDN的情况下......你首先必须在你的服务器上接收文件,然后使用CDN API上传到他们的'桶'。我不认为你可以直接上传到CDN,除非有办法将它作为你服务器上的目录映射。

答案 1 :(得分:2)

  • 通常使用提供商的API
  • 将文件移动/上传到服务或非直接访问服务器
  • 可以使用PHP + FTP扩展程序将文件移动/上传到“自己拥有”的服务器(有关详细信息:pear.php.netpecl.php.ne t)
  • 将文件移动/上传到自己拥有的服务器并成为群集中的众多服务器之一通常是通过在1台服务器上临时上传文件,然后是.sh,.bash或其他被激活的文件来完成的。将流程转移到另一台服务器。

答案 2 :(得分:1)

我认为不可能直接上传到其他服务器,但我可能错了。我有类似的问题,我使用PHP的FTP功能(http://us3.php.net/manual/en/book.ftp.php)。我仍然使用我的服务器作为中间人,这意味着我将文件上传到我的服务器,然后FTP将它们传输到目标服务器,然后从我的服务器中删除该文件。

答案 3 :(得分:1)

您可以在网络服务器上接收它,然后通过文件共享或FTP将其传输到CDN。

如果CDN面向网络,您可以将请求重定向到该服务器,并在文件上传后将控制权发送回您的网络服务器表单。最好在后端进行文件传输,并保持用户连接到Web服务器。

答案 4 :(得分:0)

不确定

代码中的某处有一个需要设置的“$ target_directory”变量。它不会被称为,但取决于你的功能如何设置它需要在那里 - 某个地方 - 。只需使用您希望文件登陆的目录的绝对路径。另外,请确保该目录已被CHMOD为777,以便可以写入。

发布您的代码,我可以提供更多帮助。

答案 5 :(得分:0)

是的亚马逊网络服务已经允许您直接从用户的浏览器上传到亚马逊S3: 文档:http://doc.s3.amazonaws.com/proposals/post.html

此外,可以通过亚马逊CDN(或任何其他可以指向客户原始服务器的cdn)公开S3存储桶