Laravel在s3 bucket上创建zip文件



所以我一直在尝试找到一个解决方案,我认为这与我在存储上创建zip的方式有关。

控制器:

$disk = Storage::disk('s3');
if($disk->exists('storage/mail_attachments/'.$this->zip_file)) {
$disk->delete('storage/mail_attachments/'.$this->zip_file);
}
$zip = new ZipArchive();
$zip->open($disk->put('storage/mail_attachments/'. $this->zip_file, ''), ZipArchive::CREATE);
$download_file = file_get_contents(config('filesystems.disks.s3.url') . '/storage/mail_attachments/user_form_'.$this->uf_id.'.pdf');
$zip->addFromString(basename(config('filesystems.disks.s3.url') . '/storage/mail_attachments/user_form_'.$this->uf_id.'.pdf'), $download_file);
$zip->close();

我们正在Laravel蒸气上托管这个,并在日志中看到这个:

ZipArchive::close(): Failure to create temporary file: Read-only file system

上面的代码创建了zip文件,但在查看它时它是空的。使用public_path创建zip文件可以正常工作。

任何帮助或建议将不胜感激!

设法让它与答案一起工作,并在谷歌上找到这个线程,它为制作zip提供了额外的步骤https://laracasts.com/discuss/channels/vapor/zipping-file-on-laravel-vapor

你不能访问lambda上的本地文件存储,因为它是无服务器的

config/filesystem.php中创建一个新磁盘

'tmp' => [
'driver' => 'local',
'root' => env('USE_LAMBDA_STORAGE', true) ? "/tmp" : storage_path('app/temp'),
'url' => env('USE_LAMBDA_STORAGE', true) ? "/tmp" : storage_path('app/temp'),
],

使用$disk = Storage::disk('tmp');命令创建zip文件。

相关内容

  • 没有找到相关文章

最新更新