ExportAsCsv on Laravel Vapor downloads unknown.txt #4886
-
Description:When running the Screen.Recording.2022-04-25.at.07.53.33.movPossible Solution:Does the vapor binary header need to be added to the download response? 'X-Vapor-Base64-Encode' => 'True', |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments
-
|
Can you test and verify if the following works <?php
namespace App\Nova\Actions;
use Laravel\Nova\Actions\ExportAsCsv as NovaExportAsCsv;
use Laravel\Nova\Http\Requests\ActionRequest;
class ExportAsCsv extends NovaExportAsCsv
{
/**
* Execute the action for the given request.
*
* @param \Laravel\Nova\Http\Requests\ActionRequest $request
* @return mixed
*
* @throws \Laravel\Nova\Exceptions\MissingActionHandlerException|\Throwable
*/
public function handleRequest(ActionRequest $request)
{
return tap(parent::handleRequest($request), function ($response) {
$response->headers->set('X-Vapor-Base64-Encode', 'True');
});
}
}And then use |
Beta Was this translation helpful? Give feedback.
-
|
@crynobone Unfortunately, I still get the |
Beta Was this translation helpful? Give feedback.
-
|
Can anyone tests this https://gist.github.com/crynobone/56987f4ca5be4483104f692ec08d6dcb |
Beta Was this translation helpful? Give feedback.
-
Local EnvironmentThese may apply to ExportAsCsv too:
Vapor Environment
Click here for raw log
{message: "fopen(export-as-csv-20220609121407.csv): Failed to open stream: Read-only file system",…}
exception: "ErrorException"
file: "/var/task/vendor/box/spout/src/Spout/Common/Helper/GlobalFunctionsHelper.php"
line: 23
message: "fopen(export-as-csv-20220609121407.csv): Failed to open stream: Read-only file system"
trace: [,…]
0: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php",…}
1: {function: "Illuminate\Foundation\Bootstrap\{closure}",…}
2: {file: "/var/task/vendor/box/spout/src/Spout/Common/Helper/GlobalFunctionsHelper.php", line: 23,…}
3: {file: "/var/task/vendor/box/spout/src/Spout/Writer/WriterAbstract.php", line: 102, function: "fopen",…}
4: {file: "/var/task/vendor/rap2hpoutre/fast-excel/src/Exportable.php", line: 99, function: "openToFile",…}
5: {file: "/var/task/vendor/rap2hpoutre/fast-excel/src/Exportable.php", line: 48,…}
6: {file: "/var/task/app/Nova/Actions/VaporExportAsCsv.php", line: 93, function: "export",…}
7: {file: "/var/task/app/Nova/Actions/VaporExportAsCsv.php", line: 80, function: "dispatchExportUsing",…}
8: {file: "/var/task/vendor/laravel/nova/src/Actions/Action.php", line: 294,…}
9: {file: "/var/task/vendor/laravel/nova/src/Actions/DispatchAction.php", line: 197,…}
10: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Support/helpers.php", line: 418,…}
11: {file: "/var/task/vendor/laravel/nova/src/Actions/DispatchAction.php", line: 116, function: "with"}
12: {file: "/var/task/vendor/laravel/nova/src/Actions/Action.php", line: 308, function: "dispatch",…}
13: {file: "/var/task/vendor/laravel/nova/src/Http/Controllers/ActionController.php", line: 46,…}
14: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Controller.php", line: 54,…}
15: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php", line: 45,…}
16: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Route.php", line: 261,…}
17: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Route.php", line: 204,…}
18: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Router.php", line: 725,…}
19: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 141,…}
20: {file: "/var/task/vendor/laravel/nova/src/Http/Middleware/Authorize.php", line: 18,…}
21: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
22: {file: "/var/task/vendor/laravel/nova/src/Http/Middleware/BootTools.php", line: 20,…}
23: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
24: {file: "/var/task/vendor/laravel/nova/src/Http/Middleware/DispatchServingNovaEvent.php", line: 24,…}
25: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
26: {file: "/var/task/vendor/inertiajs/inertia-laravel/src/Middleware.php", line: 88,…}
27: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
28: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",…}
29: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
30: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php", line: 44,…}
31: {file: "/var/task/vendor/laravel/nova/src/Http/Middleware/Authenticate.php", line: 31,…}
32: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
33: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php", line: 44,…}
34: {file: "/var/task/app/Http/Middleware/Authenticate.php", line: 14, function: "handle",…}
35: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
36: {,…}
37: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
38: {,…}
39: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
40: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",…}
41: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",…}
42: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
43: {,…}
44: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
45: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",…}
46: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
47: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 116,…}
48: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Router.php", line: 726,…}
49: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Router.php", line: 703,…}
50: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Router.php", line: 667,…}
51: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Routing/Router.php", line: 656,…}
52: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", line: 167,…}
53: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 141,…}
54: {file: "/var/task/vendor/livewire/livewire/src/DisableBrowserCache.php", line: 19,…}
55: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
56: {file: "/var/task/vendor/laravel/nova/src/Http/Middleware/ServeNova.php", line: 23,…}
57: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
58: {file: "/var/task/vendor/laravel/vapor-core/src/Http/Middleware/ServeStaticAssets.php", line: 21,…}
59: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
60: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php", line: 49,…}
61: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
62: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php", line: 39,…}
63: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
64: {,…}
65: {,…}
66: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
67: {,…}
68: {,…}
69: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
70: {,…}
71: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
72: {,…}
73: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
74: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 116,…}
75: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", line: 142,…}
76: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", line: 111,…}
77: {file: "/var/task/vendor/laravel/octane/src/ApplicationGateway.php", line: 36, function: "handle",…}
78: {file: "/var/task/vendor/laravel/octane/src/Worker.php", line: 92, function: "handle",…}
79: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Octane/Octane.php", line: 190,…}
80: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 141,…}
81: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Http/Middleware/EnsureBinaryEncoding.php",…}
82: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
83: {,…}
84: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
85: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Http/Middleware/RedirectStaticAssets.php",…}
86: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
87: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Http/Middleware/EnsureOnNakedDomain.php",…}
88: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 180,…}
89: {file: "/var/task/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", line: 116,…}
90: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Octane/Octane.php", line: 193,…}
91: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Octane/Octane.php", line: 158,…}
92: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/Handlers/OctaneHandler.php", line: 26,…}
93: {file: "/var/task/octaneRuntime.php", line: 87, function: "handle",…}
94: {file: "/var/task/vendor/laravel/vapor-core/src/Runtime/LambdaRuntime.php", line: 53,…}
95: {file: "/var/task/octaneRuntime.php", line: 89, function: "nextInvocation",…}
96: {file: "/var/task/runtime.php", line: 33, function: "require"}
97: {file: "/opt/bootstrap.php", line: 6, function: "require"}
|
Beta Was this translation helpful? Give feedback.
-
|
Here are results using the changes recommended here: Local EnvironmentThese may apply to ExportAsCsv too:
Vapor Environment
Overall ✅ Success 🎉 🥳Couple ideas for features:
|
Beta Was this translation helpful? Give feedback.
-
|
Queueable can't be done without serializing ActionRequest and query builder and this is somewhat hackish (which is being done on https://github.com/SpartnerNL/Laravel-Nova-Excel using https://github.com/laravie/serialize-queries). |
Beta Was this translation helpful? Give feedback.
-
|
I just released the following tools which should solve the issues on Vapor: |
Beta Was this translation helpful? Give feedback.
@dmason30
I just released the following tools which should solve the issues on Vapor: