使用PHP中的Flysystem从S3下载文件

时间:2016-12-13 06:09:06

标签: php laravel flysystem

我想知道我是否能得到一些帮助。

我在我的项目中使用Flysystem包。

目前,我正在使用以下代码将文件上传到S3

$awss3 = new Flysystem(new AwsS3Adapter($client_details, 'bucket-name'));
$stream = fopen(public_path() . '/upload/' . $filename . '.gz', 'r+');
$awss3->writeStream($filename . '.gz', $stream);

这很有效。

但我无法弄清楚如何反向运行它并下载文件。

非常感谢任何帮助。

干杯,

1 个答案:

答案 0 :(得分:0)

您可以使用flysystem readStream函数

$stream = $filesystem->readStream('something/is/here.ext');

然后您可以使用写入流直接写入磁盘

$filesystem->writeStream('backups/'.strftime('%G-%m-%d').'.backup', $stream)

或者您可以使用以下代码段直接下载文件

            //Get File Extension
            $file_extension = ;

            //Get File Size
            $file_size = ;

            // Set the headers, prevent caching.
            header("Pragma: public");
            header("Expires: -1");
            header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0");

            header("Content-Transfer-Encoding: binary");
            header("Content-Type:application/" . $file_extension);
            header('Content-Disposition: attachment; filename="' . $file_name . '"');

            header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");

            header('Content-Length: ' . $file_size);
            header('Accept-Ranges: bytes');
            fpassthru($stream);