从GitHub克隆项目后图片上传路径异常:未存入storage/public而存至C:\xampp\tmp
问题解决:图片未存入指定目录的修复方案
核心问题分析
你的代码仅完成了表单验证,但没有执行文件的存储逻辑,直接将包含临时文件路径的验证数据存入数据库,导致图片停留在XAMPP的tmp临时目录。
修复步骤
1. 修正控制器代码,启用文件存储逻辑
取消注释文件存储的代码,同时统一变量名拼写:
public function store(Request $request) { $validatedData = $request->validate([ 'pembelian_id' => '', 'pconfirm_pic' => 'image|file|max:5087' ]); // 执行文件存储,指定public磁盘和payment_confirmation目录 if ($request->hasFile('pconfirm_pic')) { $validatedData['pconfirm_pic'] = $request->file('pconfirm_pic')->store('payment_confirmation','public'); } Payconfirm::create($validatedData); return redirect('/user/purchase/?status_pembayaran=1'); }
2. 确认文件系统配置
检查项目根目录的.env文件,确保文件系统磁盘设置为public:
FILESYSTEM_DISK=public
3. 生成存储目录的符号链接(关键步骤)
Laravel的storage/public目录需要通过符号链接映射到项目根目录的public/storage,才能让前端正常访问图片。在终端执行以下Artisan命令:
php artisan storage:link
补充说明
- 执行
store('payment_confirmation','public')后,图片会被移动到storage/app/public/payment_confirmation目录下 - 数据库中存储的是相对路径(如
payment_confirmation/xxx.jpg),可以通过asset('storage/'.$path)生成前端访问链接
内容的提问来源于stack exchange,提问作者Renova Putra
相关产品推荐
相关产品推荐

