谁能帮我这个..??

我想将所有文件从存储桶文件夹内的文件夹中下载到我计算机的同名目录中。

假设有一个存储桶名称“ABC”,里面有一个文件夹,是“DEF”..在哪个文件夹中有多个文件可用..

现在我想将它下载到我的项目文件夹“/opt/lampp/htdocs/porject/files/download/”这里“DEF”文件夹也可用..

所以,任何人都可以帮助我,并给我这个代码..?

提前致谢..

==============

错误 :

致命错误:未捕获的异常 'UnexpectedValueException' 带有消息 'RecursiveDirectoryIterator::_construct() [recursivedirectoryiterator.--construct]: 无法找到包装器“s3” - 您是否在配置 PHP 时忘记启用它?在/opt/lampp/htdocs/demo/amazon-s3/test.php:21 堆栈跟踪:#0/opt/lampp/htdocs/demo/amazon-s3/test.php(21): RecursiveDirectoryIterator->_construct(' s3://bucketname/folder...') #1 {main} 在第 21 行的/opt/lampp/htdocs/demo/amazon-s3/test.php 中抛出

最佳答案

使用 Amazon S3 流包装器非常简单:

include dirname(__FILE__) . '/aws.phar';
$baseDirectory = dirname(__FILE__) .'/'.$myDirectoryName;


$client = \Aws\S3\S3Client::factory(array(
    'key'    => "<my key>",
    'secret' => "<my secret>"
));

$client->registerStreamWrapper();


$bucket = 's3://mys3bucket/' . $myDirectoryName

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($bucket),
    RecursiveIteratorIterator::SELF_FIRST
);

foreach($iterator as $name => $object) {
    if ($object->getFileName() !== '.' && $object->getFileName() !== '..') {
        $relative = substr($name,strlen($bucket)+1);
        if (!file_exists($baseDirectory . '/' . $path . '/' . $relative)) {
            if ($object->isDir()) {
                mkdir($baseDirectory . '/' . $path . '/' . $relative, 0777, true);
            } else {
                file_put_contents(
                    $baseDirectory . '/' . $path . '/' . $relative,
                    file_get_contents($name)
                );
            }
        }
    }
}

10-05 22:40
查看更多