【问题标题】:PHP Amazon S3 - Bulk Copy whole files and their contents from hosted server to Amazon S3PHP Amazon S3 - 将整个文件及其内容从托管服务器批量复制到 Amazon S3
【发布时间】:2014-03-03 14:57:31
【问题描述】:

我正在将我的媒体文件从我的第三方托管服务器迁移到 Amazon S3。我设法尝试了一个通过 HTML 上传的教程,以便将文件上传到 Amazon 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 警告:S3::inputFile():无法打开输入文件:图片/

请问我该怎么做?

谢谢

【问题讨论】:

    标签: php amazon-web-services amazon-s3


    【解决方案1】:

    您正在尝试打开一个文件夹。你需要给它一个文件...

    $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);
        }
    }
    

    【讨论】:

    • 我在我的服务器上本地打开文件。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2016-07-31
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多