用php将大文件上传到云端

时间:2011-02-03 17:14:42

标签: php zend-framework cloud rackspace

我正在尝试使用Compass API将大文件上传到rackspace云: http://www.compasswebpublisher.com/php/rackspace-cloudfiles-php-api

它适用于小文件(jpg)但当文件超过100MB时脚本崩溃。嗯,确切地说,脚本就停止了。

$cf = new Compass_Service_Rackspace_Cloudfiles('myid', 'myApiKey', Compass_Service_Rackspace_Cloudfiles::UK_AUTHURL);
$cf->auth();
set_time_limit(60*60);
ini_set("memory_limit","256M");
ini_set('upload_max_filesize', '700M');
ini_set('post_max_size', '700M');
$contents = file_get_contents($path);
$cf->putObject('container/filename', $contents);

我第一次认为这是一个内存问题,但即使使用256M脚本也无法正常工作。

知道为什么它不起作用吗?

非常感谢!

此致 PV

3 个答案:

答案 0 :(得分:2)

我不确定您尝试使用哪种脚本,但由于脚本超时而可能会崩溃,除非它正在处理。

我不建议您使用表单定期上传100 MB文件,除非绝对必要并且脚本编写得很好以处理限制。这就是FTP的用途。

答案 1 :(得分:0)

作为第一个解决方案,我建议你传递0 set_time_limit函数,因为它会使脚本能够运行到最后而不会超时。

作为第二个解决方案,我建议你使用plupload库作为前端,这将允许你按块上传文件。点击此处了解详情http://www.plupload.com/

答案 2 :(得分:0)

您可以使用raskcpace云API将文件发送到rackspace云文件。

上传文件的工作流程

  1. 首先将文件上传到您的服务器。
  2. 从webserver
  3. 将文件发送到rackspace云文件容器
  4. 从您的网络服务器中删除该文件或将其保留在您的选择中。
  5. 您可以使用PHP的input:// stream和XMLHttpRequest将文件以块的形式上传到您的网络服务器。更多信息http://www.webiny.com/blog/2012/05/07/webiny-file-upload-with-html5-and-ajax-using-php-streams/

    您可以在https://github.com/rackspace/php-opencloud

    找到rackspace API