2

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

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

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

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

这很完美。

但我不知道如何反向运行它并下载文件。

任何帮助将不胜感激。

干杯,

4

1 回答 1

2

您可以使用 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);
于 2017-02-24T15:16:07.530 回答