2014-03-03 230 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);