使用readStream和writeStream

时间:2016-02-19 08:49:22

标签: php amazon-s3 filesystems flysystem

我正在使用League \ Flysystem在Amazon S3上上传文件。上传文件后,我想从我的服务器上删除该文件。起初我使用读取和写入方法,然后删除方法,它工作正常。由于我有大文件,使用read方法不是一个好的解决方案,因为它分配了大量的内存。现在我正在使用readStream和writeStream,但是当writeStream完成时,我关闭流并且delete方法返回false。我也尝试使用unlink,但文件仍未删除。看起来该文件被另一个进程使用,但我不确定如何发布它。这是一个代码示例:

$client = S3Client::factory([
        'credentials' => [
            'key'    => AWS_ACCESS_KEY,
            'secret' => AWS_SECRET_KEY,
        ],
        'region' => 'eu-west-1',
        'version' => '2006-03-01',
    ]);

$s3 = new AwsS3Adapter($client, AWS_BUCKET);
$local = new Filesystem(new Adapter($localFolder));

$config = new Config();
$config->set("visibility", "private");

$readStream = $local->readStream($fileName);
$writeStream = $s3->writeStream($file, $readStream, $config);

if (is_resource($readStream))
{
    fclose($readStream);
}

if (is_resource($writeStream))
{
    fclose($writeStream);
}

$local->delete($fileName);

我也试过这个,没有运气:

$local = new Filesystem(new Adapter($localFolder), 0);

我不得不再次提到,当使用读写方法时,删除工作正常。

0 个答案:

没有答案