php – 从amazon s3 buckets子文件夹中获取文件

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 从amazon s3 buckets子文件夹中获取文件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从亚马逊S3桶子文件夹中获取所有文件,并使其可以在网页中下载.

我有一个叫做图像的桶.在那个桶里面我有一些其他的文件夹.现在我试图获取该子文件夹中的所有文件并在页面显示它.
S3铲斗:
/图片
/图像/ test1 /
/图像/ test2 /
/图像/ test1 / 1
/图像/ TEST1 / 2
/图像/ TEST1 / 1 /项目

我试过这样,但无法得到预期的结果.

// Target files full path : images/test1/1/ITem 

$bucketName = 'images';
$source = '/test1/1/item' 

$image = $this->s3->getBucket($bucketName);
foreach ($image as $key=>$data){
   $k = $data['name'];
   PRint_r($k); // Now this gives me full list of everything inside the images bucket. 
}

现在,如果我想从存储桶中获取对象,我可以使用getObject,我尝试这样做:

$result = $this->s3->getObject($image); // I am confused about this one

任何建议将不胜感激.谢谢,

在使用Josue Ibarra的以下答案后,我得到了类似的东西

(

 [tableuploads/1/emaillists/15.10.2013-18.03.23-emailList.csv] => Array
     (
         [file_name] => 15.10.2013-18.03.23-emailList.csv
         [file_folder] => emaillists
         [file_size] => 64
         [created_on] => 2013-10-15 19:03:26
         [s3_link] => http://s3.amazonaws.COM/weBTools_sharing/emaillists/15.10.2013-       18.03.23-emailList.csv
        [md5_hash] => 4809ae0b75d3517b69f69b53ba0b2959
    )

[tableuploads/1/emaillists/15.10.2013-18.04.32-emailList.csv] => Array
    (
        [file_name] => 15.10.2013-18.04.32-emailList.csv
        [file_folder] => emaillists
        [file_size] => 64
        [created_on] => 2013-10-15 19:04:45
        [s3_link] => http://s3.amazonaws.com/webtools_sharing/emaillists/15.10.2013-18.04.32-emailList.csv
        [md5_hash] => 14094e133779619ddfcfc008d16ce75b
    )

[tableuploads/2/emaillists/15.10.2013-18.03.23-emailList.csv] => Array
    (
        [file_name] => 15.10.2013-18.03.23-emailList.csv
        [file_folder] => emaillists
        [file_size] => 64
        [created_on] => 2013-10-15 19:03:26
        [s3_link] => http://s3.amazonaws.com/webtools_sharing/emaillists/15.10.2013-18.03.23-emailList.csv
        [md5_hash] => 4809ae0b75d3517b69f69b53ba0b2959
    )

[tableuploads/2/emaillists/15.10.2013-18.04.32-emailList.csv] => Array
    (
        [file_name] => 15.10.2013-18.04.32-emailList.csv
        [file_folder] => emaillists
        [file_size] => 64
        [created_on] => 2013-10-15 19:04:45
        [s3_link] => http://s3.amazonaws.com/webtools_sharing/emaillists/15.10.2013-18.04.32-emailList.csv
        [md5_hash] => 14094e133779619dDFCFc008d16ce75b
    )
)

我想要这样的东西:
http://s3.amazonaws.com/webtools_sharing/tableuploads/1/emaillists/15.10.2013-18.03.23- emailList.csv

http://s3.amazonaws.com/webtools_sharing/tableuploads/2/emaillists/15.10.2013-18.03.23-emailList.csv

哪个需要是可下载的链接.

请建议我链接或给我一些想法我该怎么做.

我不久前做了这个功能
public function list_s3_bucket($bucket_name)
{
    // initialize the data array
    $data;
    $bucket_content = $this->s3->getBucket($bucket_name);

    foreach ($bucket_content as $key => $value) {
        // ignore s3 "folders"
        if (preg_match("/\/$/",$key)) continue;

        // explode the path into an array
        $file_path = explode('/',$key);
        $file_name = end($file_path);
            $file_folder = substr($key,(strlen($file_name) * -1)+1);
        $file_folder = prev($file_path);

        $s3_url = "https://s3.amazonaws.com/{$bucket_name}/{$key}";

        $data[$key] = array(
            'file_name' => $file_name,'s3_key' => $key,'file_folder' => $file_folder,'file_size' => $value['size'],'created_on' => date('Y-m-d H:i:s',$value['time']),'s3_link' => $s3_url,'md5_hash' => $value['hash']);
    }
    return $data;
}

它返回一个数组,键是完整的文件名,所以你可以这样做:

$list = $this->your_model->list_s3_bucket($bucket_name);

foreach ($list as $key => $row){
   force_download($this->s3->getObject($row['s3_key']),$row['file_name']);
   // you can use this url:
   print($row['s3_link']);
}

function force_download($data,$file_name)
{
      header("Content-tyPE: application/octet-stream");
      header("Content-Disposition: attachment; filename=\"{$file_name}\"");
      echo $data;
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – 从amazon s3 buckets子文件夹中获取文件全部内容,希望文章能够帮你解决php – 从amazon s3 buckets子文件夹中获取文件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。