请阅读:需要填写模板! 不包含足够信息的问题可能不会被发现。 您是否阅读过 Laravel-Excel 的贡献指南(https://laravel-excel.maatwebsite.nl/docs/3.1/getting-started/contributing)和行为准则(https://github.com/Maatwebsite/Laravel-Excel/ blob/3.1/CODE_OF_CONDUCT.md)? 通过提交问题,您应该遵守它,包括尊重每个人。 请为您的问题添加以下前缀之一:[BUG] [PROPOSAL] [QUESTION]。
当我尝试导入文件(不管它是 .xlsx、.ods 还是 .csv)并将块读取排队时,作业失败并在我的 failed_jobs 表中出现此错误:
InvalidArgumentException: File "/tmp/SWQF2KfyI6BP0k1x" does not exist. in /home/miguel/www/html/proliste/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php:137
预期行为:
我希望这项工作能够顺利完成。 如果我不排队工作,它就没有问题。
实际行为:
failed_jobs 表中的堆栈跟踪:
InvalidArgumentException: File "/tmp/SWQF2KfyI6BP0k1x" does not exist. in /home/miguel/www/html/proliste/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php:137
Stack trace:
#0 /home/miguel/www/html/proliste/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx.php(389): PhpOffice\PhpSpreadsheet\Shared\File::assertFile('/tmp/SWQF2KfyI6...')
#1 /home/miguel/www/html/proliste/vendor/maatwebsite/excel/src/Jobs/ReadChunk.php(82): PhpOffice\PhpSpreadsheet\Reader\Xlsx->load('/tmp/SWQF2KfyI6...')
#2 [internal function]: Maatwebsite\Excel\Jobs\ReadChunk->handle()
#3 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#4 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#5 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#6 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/Container.php(564): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#7 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#8 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Maatwebsite\Excel\Jobs\ReadChunk))
#9 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Maatwebsite\Excel\Jobs\ReadChunk))
#10 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#11 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Maatwebsite\Excel\Jobs\ReadChunk), false)
#12 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(83): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)
#13 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(326): Illuminate\Queue\Jobs\Job->fire()
#14 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(276): Illuminate\Queue\Worker->process('database', Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))
#15 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(118): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), 'database', Object(Illuminate\Queue\WorkerOptions))
#16 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('database', 'default', Object(Illuminate\Queue\WorkerOptions))
#17 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')
#18 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
#19 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#20 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#21 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#22 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Container/Container.php(564): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#23 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Console/Command.php(179): Illuminate\Container\Container->call(Array)
#24 /home/miguel/www/html/proliste/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#25 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Console/Command.php(166): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#26 /home/miguel/www/html/proliste/vendor/symfony/console/Application.php(886): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27 /home/miguel/www/html/proliste/vendor/symfony/console/Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 /home/miguel/www/html/proliste/vendor/symfony/console/Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#29 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Console/Application.php(89): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#30 /home/miguel/www/html/proliste/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 /home/miguel/www/html/proliste/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#32 {main}
从堆栈跟踪错误似乎来自PhpSpreadsheet ,我认为这是一个读/写权限问题,但我的/tmp
文件夹是 777,而且我的 php.ini 文件自安装以来没有改变(除了upload_max_filesize post_max_size)。
我的 ContactsImport 类:
<?php
namespace App\Imports;
use App\Contact;
use App\Rubric;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\Importable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class ContactsImport implements ToModel, WithBatchInserts, WithChunkReading, WithHeadingRow, ShouldQueue
{
use Importable;
/**
* <strong i="10">@param</strong> array $row
*
* <strong i="11">@return</strong> \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
if (isset($row['rubrique'])) {
$rubric = Rubric::firstOrCreate(['name' => $row['rubrique']]);
} else {
$rubric = Rubric::where('name', 'AUTRE')->first();
}
$area_id = intval(substr($row['code_postal'], 0, 2)) !== 0 ? intval(substr($row['code_postal'], 0, 2)) : 1;
return new Contact([
'name' => $row['nom'],
'address' => $row['adresse'],
'postal_code' => $row['code_postal'],
'city' => $row['ville'],
'phone_number' => $row['telephone'],
'fax_number' => $row['fax'],
'email' => $row['email'],
'rubric_id' => $rubric->id,
'area_id' => $area_id
]);
}
public function batchSize(): int
{
return 1000;
}
public function chunkSize(): int
{
return 1000;
}
}
嗨@MLouis ,
你能检查一下你的控制器的代码吗?
您正在使用 Importable 特性,因此在您的控制器中您应该使用(new ContactsImport)->queue('file.ext');
请参考进口商品
如果此后问题仍未解决,请同时发布您的控制器代码。
嗨@GlennM ,感谢您的回复!
在我的控制器中,我尝试了两者:
Excel::import(new ContactsImport, $request->file('liste'));
// and
(new ContactsImport)->queue($request->file('liste'));
我还尝试先存储用户提交的文件,然后再将其传递给 ContactsImport:
$fileName = Str::uuid() . '.' . $request->file('liste')->getClientOriginalExtension();
$request->file('liste')->storeAs('listes', $fileName);
Excel::import(new ContactsImport, 'listes/' . $fileName);
// also tried with
(new ContactsImport)->queue('listes/' . $fileName);
但我仍然得到同样的错误InvalidArgumentException: File "/tmp/whatever" does not exist. in /home/miguel/www/html/proliste/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php:137
我的列表控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Imports\ContactsImport;
use App\Exports\ContactsExport;
use App\Contact;
use App\Rubric;
use App\Area;
use App\Cart;
use Excel;
use DB;
use App\Http\Requests\ListRequest;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class ListController extends Controller
{
public function import(Request $request)
{
$request->validate([
'liste' => 'required'
]);
$fileName = Str::uuid() . '.' . $request->file('liste')->getClientOriginalExtension();
$request->file('liste')->storeAs('listes', $fileName);
(new ContactsImport)->queue('listes/' . $fileName);
return back()->with('status', 'Liste ajoutée avec succès');
}
}
不幸的是,我无法重现它。
以下代码应该在控制器中工作:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
public function import(Request $request)
{
(new ContactsImport)->queue($request->file('liste'));
return back()->with('status', 'Liste ajoutée avec succès');
}
仅供参考,我使用的是简化版本,这是我的控制器中的方法:
public function process(Request $request)
{
(new UsersImport)->queue($request->file('dataset'));
return back()->with('success', 'All good!');
}
和我的 UsersImport 类:
<?php
namespace App\Imports;
use App\User;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class UsersImport implements ToModel, WithHeadingRow, WithBatchInserts, WithChunkReading, ShouldQueue
{
use Importable;
/**
* <strong i="13">@param</strong> array $row
*
* <strong i="14">@return</strong> \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new User([
'name' => $row['name'],
'email' => $row['email'],
'password' => $row['id'],
]);
}
/**
* <strong i="15">@return</strong> int
*/
public function batchSize(): int
{
return 1000;
}
/**
* <strong i="16">@return</strong> int
*/
public function chunkSize(): int
{
return 1000;
}
}
我尝试添加/删除WithHeadingRow
、 WithBatchInserts
、 WithChunkReading
、 Importable
,使用ToCollection
而不是ToModel
没有成功. 它仅在我不排队作业时才有效。
而且我在导出带有排队作业的列表时没有任何问题,只有导入失败。
也许问题来自我的开发服务器配置错误?
也许问题来自我的开发服务器配置错误?
情况可能确实如此。
我在 PHP 7.1 / Laravel 5.6 和 PHP 7.2 / Laravel 5.7 上进行了测试,并且能够在这两种情况下使用 T oModel
、 WithHeadingRow
、 WithBatchInserts
、 WithChunkReading
导入文件ShouldQueue
和Importable
如果您在商业上使用该软件并需要精心支持或迫切需要它,我们可以在商业基础上提供。 在这种情况下,请参阅我们的支持页面。
我可能处于领先地位:在尝试对 150K+ 行的排队导出后,作业失败给我同样的错误,但不像导入那样立即,在 20 AppendQueryToSheet
作业之后。
所以我的/tmp
文件夹可能有问题,比如大小限制。 我在 Debian 9 上,但我只有 3 个分区: /
(包含/tmp
)、 /home
和swap
,这不是分区大小限制。
如果我发现了什么,我会给你更新! :祈祷:
__编辑__
我应该将此问题重命名为 [QUESTION] 而不是 [BUG] 吗?
尝试将 temp_path (https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/config/excel.php#L28) 更改为例如您的存储文件夹。 可能会为您解决问题。
谢谢@patrickbrouwers ,它解决了我的问题,我可以
@patrickbrouwers config excel 中没有 temp_path。 你能详细说明一下吗?
@sharjeelz如果您有最新版本的配置文件,请参阅: https :
嘿伙计们,我知道这是一个陈旧的问题。 但我似乎有一个非常相似的问题。 我和我的同事都在运行相同的代码库,在那里我得到“文件 X 不存在”而他没有。 我们猜测这是一个配置问题。 但即使我更改了 config/local_path,我仍然无法解决这个问题。
我真的只是在寻找可能导致这种情况的已知问题。 我们都在 macbook 上本地运行我们的 Laravel 项目,并使用 lib 版本3.1.17
文件名 C:UsersAshimAppDataLocalTemplaravel-excel-K6OeXpSQuAARlI0UrSeOAkFZ0kELq0Ax.xls 未被识别为 OLE 文件
我该如何解决这个问题
您好,我遇到了同样的问题,但我的问题是:为什么它显示的文件名与我在导入功能中发送的文件名不同? 它是否创建了一个临时文件,从中读取信息?
````
[2020-04-17 15:15:26] local.ERROR:文件“/tmp/laravel-excel-rKsJKI2Clu2sEV3OqMtPngacRRZd8iJM.xlsx”不存在。 {“异常”:“[对象](InvalidArgumentException(代码:0):文件“/tmp/laravel-excel-rKsJKI2Clu2sEV3OqMtPngacRRZd8iJM.xlsx”不存在。在/var/www/html/sites/dashboard-imprensa/vendor/ phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php:137)
[堆栈跟踪]
"}
````
这是我收到的错误,但我发送的文件是“temp/12020-04.xlsx”。 我已经检查过它是否确实在接收这个文件。 如果它确实创建了临时文件,为什么找不到该文件?
嗨@patrickbrouwers ,非常感谢您的快速回复。 我试过了,但它没有解决我的问题:(
$header = (new HeadingRowImport)->toArray($request->file('arquivo'))[0][0];
$file = Storage::putFileAs(
'temp',
$request->file('arquivo'),
$request->input('dashboard_id') . str_replace("/", "-", $request->input('ano_mes')) . '.' . pathinfo($request->file('arquivo')->getClientOriginalName())['extension']
);
if ($request->input('acao') == "import") {
Excel::import((new DadosImport($request->input('ano_mes'), $request->input('dashboard_id'), $header, $file, true)), $file);
} else {
Excel::import((new DadosImport($request->input('ano_mes'), $request->input('dashboard_id'), $header, $file)), $file);
}
这是我的导入功能,非常标准。 该文件保存在正确的文件夹中。 我也尝试使用 public_path($file)。 导入会创建临时文件吗?
我删除了该项目,重新安装了所有内容,现在一切正常了哈哈,非常感谢您的帮助:))
我使用队列作业导出 excel anfd 作业无法运行,因为它向我显示异常:
ErrorException: fopen(/var/www/html/biomaze.ir/storage/framework/laravel-excel/laravel-excel-85fvUcwqDwshFsD4o5PWwtamG83wnzG6): 无法打开流:权限在 /var/www/html/biomaze.ir/vendor 中被拒绝/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/BaseWriter. php:111
请帮忙?拜托
尝试更改storage
的所有者和权限sudo chown -R www-data:<your_username> storage/ && sudo chmod -R g+w storage/
我遇到同样的问题。
我在 homestead 中运行我的 dev env,临时文件创建得很好(因此应用程序可以看到上传的 csv ),但是 phpspreadsheet 在队列中运行时似乎无法找到文件:
InvalidArgumentException {#1344
#message: "File "/home/vagrant/code/storage/app/data-imports/laravel-excel-YNpPHnBtKZXaXKIbR68goCYM5qLlzUxt.csv" does not exist."
#code: 0
#file: "./vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php"
#line: 135
队列不会超过最初的 ReadChunk 作业。 如果我使用 tinker 并在此路径上执行 file_exists() ,则文件就在那里。
任何人都面临这个问题并解决了它?
https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/config/excel.php#L166
如何设置不同的文件夹@patrickbrouwers ?
这是我的配置文件
`<?php
use Maatwebsite\Excel\Excel;
return [
'exports' => [
/*
|--------------------------------------------------------------------------
| Chunk size
|--------------------------------------------------------------------------
|
| When using FromQuery, the query is automatically chunked.
| Here you can specify how big the chunk should be.
|
*/
'chunk_size' => 1000,
/*
|--------------------------------------------------------------------------
| Pre-calculate formulas during export
|--------------------------------------------------------------------------
*/
'pre_calculate_formulas' => false,
/*
|--------------------------------------------------------------------------
| Enable strict null comparison
|--------------------------------------------------------------------------
|
| When enabling strict null comparison empty cells ('') will
| be added to the sheet.
*/
'strict_null_comparison' => false,
/*
|--------------------------------------------------------------------------
| CSV Settings
|--------------------------------------------------------------------------
|
| Configure e.g. delimiter, enclosure and line ending for CSV exports.
|
*/
'csv' => [
'delimiter' => ',',
'enclosure' => '"',
'line_ending' => PHP_EOL,
'use_bom' => false,
'include_separator_line' => false,
'excel_compatibility' => false,
],
/*
|--------------------------------------------------------------------------
| Worksheet properties
|--------------------------------------------------------------------------
|
| Configure e.g. default title, creator, subject,...
|
*/
'properties' => [
'creator' => '',
'lastModifiedBy' => '',
'title' => '',
'description' => '',
'subject' => '',
'keywords' => '',
'category' => '',
'manager' => '',
'company' => '',
],
],
'imports' => [
/*
|--------------------------------------------------------------------------
| Read Only
|--------------------------------------------------------------------------
|
| When dealing with imports, you might only be interested in the
| data that the sheet exists. By default we ignore all styles,
| however if you want to do some logic based on style data
| you can enable it by setting read_only to false.
|
*/
'read_only' => true,
/*
|--------------------------------------------------------------------------
| Ignore Empty
|--------------------------------------------------------------------------
|
| When dealing with imports, you might be interested in ignoring
| rows that have null values or empty strings. By default rows
| containing empty strings or empty values are not ignored but can be
| ignored by enabling the setting ignore_empty to true.
|
*/
'ignore_empty' => false,
/*
|--------------------------------------------------------------------------
| Heading Row Formatter
|--------------------------------------------------------------------------
|
| Configure the heading row formatter.
| Available options: none|slug|custom
|
*/
'heading_row' => [
'formatter' => 'slug',
],
/*
|--------------------------------------------------------------------------
| CSV Settings
|--------------------------------------------------------------------------
|
| Configure e.g. delimiter, enclosure and line ending for CSV imports.
|
*/
'csv' => [
'delimiter' => ',',
'enclosure' => '"',
'escape_character' => '\\',
'contiguous' => false,
'input_encoding' => 'UTF-8',
],
/*
|--------------------------------------------------------------------------
| Worksheet properties
|--------------------------------------------------------------------------
|
| Configure e.g. default title, creator, subject,...
|
*/
'properties' => [
'creator' => '',
'lastModifiedBy' => '',
'title' => '',
'description' => '',
'subject' => '',
'keywords' => '',
'category' => '',
'manager' => '',
'company' => '',
],
],
/*
|--------------------------------------------------------------------------
| Extension detector
|--------------------------------------------------------------------------
|
| Configure here which writer/reader type should be used when the package
| needs to guess the correct type based on the extension alone.
|
*/
'extension_detector' => [
'xlsx' => Excel::XLSX,
'xlsm' => Excel::XLSX,
'xltx' => Excel::XLSX,
'xltm' => Excel::XLSX,
'xls' => Excel::XLS,
'xlt' => Excel::XLS,
'ods' => Excel::ODS,
'ots' => Excel::ODS,
'slk' => Excel::SLK,
'xml' => Excel::XML,
'gnumeric' => Excel::GNUMERIC,
'htm' => Excel::HTML,
'html' => Excel::HTML,
'csv' => Excel::CSV,
'tsv' => Excel::TSV,
/*
|--------------------------------------------------------------------------
| PDF Extension
|--------------------------------------------------------------------------
|
| Configure here which Pdf driver should be used by default.
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF
|
*/
'pdf' => Excel::DOMPDF,
],
/*
|--------------------------------------------------------------------------
| Value Binder
|--------------------------------------------------------------------------
|
| PhpSpreadsheet offers a way to hook into the process of a value being
| written to a cell. In there some assumptions are made on how the
| value should be formatted. If you want to change those defaults,
| you can implement your own default value binder.
|
| Possible value binders:
|
| [x] Maatwebsite\Excel\DefaultValueBinder::class
| [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class
| [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class
|
*/
'value_binder' => [
'default' => Maatwebsite\Excel\DefaultValueBinder::class,
],
'cache' => [
/*
|--------------------------------------------------------------------------
| Default cell caching driver
|--------------------------------------------------------------------------
|
| By default PhpSpreadsheet keeps all cell values in memory, however when
| dealing with large files, this might result into memory issues. If you
| want to mitigate that, you can configure a cell caching driver here.
| When using the illuminate driver, it will store each value in a the
| cache store. This can slow down the process, because it needs to
| store each value. You can use the "batch" store if you want to
| only persist to the store when the memory limit is reached.
|
| Drivers: memory|illuminate|batch
|
*/
'driver' => 'memory',
/*
|--------------------------------------------------------------------------
| Batch memory caching
|--------------------------------------------------------------------------
|
| When dealing with the "batch" caching driver, it will only
| persist to the store when the memory limit is reached.
| Here you can tweak the memory limit to your liking.
|
*/
'batch' => [
'memory_limit' => 60000,
],
/*
|--------------------------------------------------------------------------
| Illuminate cache
|--------------------------------------------------------------------------
|
| When using the "illuminate" caching driver, it will automatically use
| your default cache store. However if you prefer to have the cell
| cache on a separate store, you can configure the store name here.
| You can use any store defined in your cache config. When leaving
| at "null" it will use the default store.
|
*/
'illuminate' => [
'store' => null,
],
],
/*
|--------------------------------------------------------------------------
| Transaction Handler
|--------------------------------------------------------------------------
|
| By default the import is wrapped in a transaction. This is useful
| for when an import may fail and you want to retry it. With the
| transactions, the previous import gets rolled-back.
|
| You can disable the transaction handler by setting this to null.
| Or you can choose a custom made transaction handler here.
|
| Supported handlers: null|db
|
*/
'transactions' => [
'handler' => 'db',
],
'temporary_files' => [
/*
|--------------------------------------------------------------------------
| Local Temporary Path
|--------------------------------------------------------------------------
|
| When exporting and importing files, we use a temporary file, before
| storing reading or downloading. Here you can customize that path.
|
*/
'local_path' => storage_path('framework/laravel-excel'),
/*
|--------------------------------------------------------------------------
| Remote Temporary Disk
|--------------------------------------------------------------------------
|
| When dealing with a multi server setup with queues in which you
| cannot rely on having a shared local temporary path, you might
| want to store the temporary file on a shared disk. During the
| queue executing, we'll retrieve the temporary file from that
| location instead. When left to null, it will always use
| the local path. This setting only has effect when using
| in conjunction with queued imports and exports.
|
*/
'remote_disk' => null,
'remote_prefix' => null,
/*
|--------------------------------------------------------------------------
| Force Resync
|--------------------------------------------------------------------------
|
| When dealing with a multi server setup as above, it's possible
| for the clean up that occurs after entire queue has been run to only
| cleanup the server that the last AfterImportJob runs on. The rest of the server
| would still have the local temporary file stored on it. In this case your
| local storage limits can be exceeded and future imports won't be processed.
| To mitigate this you can set this config value to be true, so that after every
| queued chunk is processed the local temporary file is deleted on the server that
| processed it.
|
*/
'force_resync_remote' => null,
],
];
`
最有用的评论
尝试将 temp_path (https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/config/excel.php#L28) 更改为例如您的存储文件夹。 可能会为您解决问题。