编辑
问题解决了。不得不更新我的文件系统配置。
我想创建一个包含之前生成的所有发票的 zip 文件。问题是,如果我尝试使用 laravel 存储url()
或get()
功能,ZipArchive 找不到文件。
我试图用 , 来解决它,storage_path()
但它们都不起作用。它仅在我输入文件路径时才有效。->url()
->get()
这就是它现在的样子并且它有效。
$invoiceZipFileName = Carbon::now()->toDateString() . "_invoices.zip";
$zip = new ZipArchive();
$zip->open($invoiceZipFileName, ZipArchive::CREATE);
$files->each(function ($item, $key) use ($zip, $disk) {
$zip->addFile("storage/invoices/" . $item, $item);
});
$zip->close();
我想要实现的是这样的:
$invoiceZipFileName = Carbon::now()->toDateString() . "_invoices.zip";
$zip = new ZipArchive();
$zip->open($invoiceZipFileName, ZipArchive::CREATE);
$files->each(function ($item, $key) use ($zip, $disk) {
$zip->addFile($disk->get($item), $item);
});
$zip->close();
或者:
$invoiceZipFileName = Carbon::now()->toDateString() . "_invoices.zip";
$zip = new ZipArchive();
$zip->open($invoiceZipFileName, ZipArchive::CREATE);
$files->each(function ($item, $key) use ($zip, $disk) {
$zip->addFile($disk->url($item), $item);
});
$zip->close();
或者:
$invoiceZipFileName = Carbon::now()->toDateString() . "_invoices.zip";
$zip = new ZipArchive();
$zip->open($invoiceZipFileName, ZipArchive::CREATE);
$files->each(function ($item, $key) use ($zip, $disk) {
$zip->addFile(storage_path("invoices") . "/" . $item, $item);
});
$zip->close();
这些是错误消息(每个都是在另一种情况下,它们不会一起出现)我得到:
exception: "Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException"
file: "C:\xampp\htdocs\invoicing\vendor\symfony\http-foundation\File\File.php"
line: 36
message: "The file "2019-10-02_invoices.zip" does not exist"
exception: "ErrorException"
file: "C:\xampp\htdocs\invoicing\app\Http\Controllers\Api\V1\InvoiceController.php"
line: 211
message: "ZipArchive::close(): Failure to create temporary file: No error"
++++ 编辑 ++++ 问题已解决。不得不更新我的文件系统配置。