2014-03-03 163 views
0

我正在将我的媒体文件从我的第三方托管服务器迁移到Amazon S3。我设法尝试通过HTML上传教程来上传文件到Amazon S3以查看一切正常。PHP亚马逊S3 - 批量复制整个文件及其内容从托管服务器到亚马逊S3

我的第三方托管服务器上有数百个图像 - 我想将它们迁移到Amazon S3。我有两个选项可以将它们下载到我的服务器上并逐一上载。否则使用PHP将文件直接从第三方服务器直接上传到亚马逊(最便捷的方式)。

我想基于我试图教程此代码 -

这是我想使用的文件从我的服务器到Amazon S3复制代码:

<?php 
// Bucket Name 
$bucket="justanotherimageons3"; 
if (!class_exists('S3'))require_once('S3.php'); 

//AWS access info 
if (!defined('awsAccessKey')) define('awsAccessKey', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'); 
if (!defined('awsSecretKey')) define('awsSecretKey', 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYY'); 

$tmp = 'pictures/'; 

$s3 = new S3(awsAccessKey, awsSecretKey); 

if($s3->putObjectFile($tmp, $bucket , * , S3::ACL_PUBLIC_READ)) 
{ 
echo "S3 Upload Successful."; 
} 

?> 

不幸的是,不能正常工作PHP Warning:S3 :: inputFile():无法打开输入文件:图片/

我该怎么处理它?

谢谢

回答

0

您试图打开一个文件夹。你需要传递给它一个文件...

$tmp = 'pictures/'; 

if (is_dir($tmp)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      if(!is_file($file)){continue;} 

      $s3 = new S3(awsAccessKey, awsSecretKey); 

      if($s3->putObjectFile($tmp.$file, $bucket , * , S3::ACL_PUBLIC_READ)){ 
       echo "$file uploaded Successfully."; 
      } 
     } 
     closedir($dh); 
    } 
} 
+0

我在本地服务器上打开文件。 – user3173207

0

official AWS SDK for PHP提供了上传文件的目录S3一个非常简单的机制。它被称为uploadDirectory() method。在实例化S3客户端之后,您只需要执行以下操作:

$s3Client->uploadDirectory(__DIR__ . '/pictures/', $bucket);