我正在使用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);
我不得不再次提到,当使用读写方法时,删除工作正常。