Laravel Filament上传至Cloudinary时出现404资源未找到错误
Laravel + Filament 上传Cloudinary提交表单报错:Resource not found
我用Laravel开发网站,后台用Filament面板。已经在filesystems.php配置了Cloudinary作为存储磁盘,也把.env里的FILESYSTEM_DISK改成了cloudinary。
Cloudinary存储配置:
'cloudinary' => [ 'driver' => 'cloudinary', 'api_key' => env('CLOUDINARY_API_KEY'), 'api_secret' => env('CLOUDINARY_API_SECRET'), 'cloud_name' => env('CLOUDINARY_CLOUD_NAME'), 'secure' => env('CLOUDINARY_SECURE', true), 'url' => env('CLOUDINARY_URL'), 'throw' => false, ],
Filament表单图片上传代码:
Section::make('image')->schema([ FileUpload::make('image') ->disk('cloudinary') ->required() ->image() ->maxFiles(1) ->label('') ])->collapsible(),
问题现象:
选择图片后,提交表单前图片已成功上传至Cloudinary的livewire文件夹,但提交表单时抛出异常:
Resource not found - livewire-tmp/yVYWB1RelRjCXBVeW851JyAuf00ag5-metaMS5qcGc=-.jpg
我在其他路由直接上传到Cloudinary功能正常,所以怀疑问题出在Filament这边,求解决办法。
可能的解决方向
- 配置Livewire临时存储磁盘为Cloudinary
Filament依赖Livewire处理上传,默认情况下Livewire会把临时文件存在本地磁盘。如果默认磁盘改成了Cloudinary,需要同步配置Livewire的临时存储路径:
修改config/livewire.php中的temporary_file_upload部分:
'temporary_file_upload' => [ 'disk' => 'cloudinary', 'rules' => 'file|max:12288', // 可根据需求调整大小 'directory' => 'livewire-tmp', 'middleware' => 'throttle:5,1', 'preview_mimes' => [ 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', 'mov', 'avi', 'wmv', 'mp3', 'm4a', 'jpg', 'jpeg', 'webp', 'avif', ], ],
- 禁止Filament自动清理临时文件
尝试给FileUpload组件添加->keepFiles()方法,避免提交时自动清理Cloudinary上的临时文件:
FileUpload::make('image') ->disk('cloudinary') ->required() ->image() ->maxFiles(1) ->label('') ->keepFiles()
检查Cloudinary权限与文件路径
确认Cloudinary的API密钥拥有读取livewire-tmp目录的权限,同时核对Cloudinary中实际存储的文件路径是否和错误提示的完全一致,排除大小写、特殊字符导致的路径匹配问题。更新Filament与Livewire版本
部分版本间的兼容性问题可能引发此类错误,尝试更新到最新稳定版的Filament和Livewire后再测试。
内容的提问来源于stack exchange,提问作者aaaddd
相关产品推荐
相关产品推荐

