如何将上传的视频保存到Public路径?原图片处理方案失效
视频上传保存解决方案
问题根源
Image Intervention Package仅支持处理图片格式,无法解析视频文件,你原代码中Image::make($video)的调用必然失效,因为该方法无法处理视频资源。
正确实现代码
直接使用Laravel自带的文件操作能力保存视频,无需依赖Image Intervention:
use Illuminate\Support\Facades\File; $video = $request->file('video'); // 生成唯一文件名 $vid_name = hexdec(uniqid()) . '.' . $video->getClientOriginalExtension(); // 定义public目录下的保存路径 $saveDir = 'uploads/about/experience_us/'; $fullSavePath = public_path($saveDir); // 确保目标目录存在,不存在则递归创建 if (!File::exists($fullSavePath)) { File::makeDirectory($fullSavePath, 0755, true); } // 将上传的视频文件移动到目标目录 $video->move($fullSavePath, $vid_name); $vid_url = $saveDir . $vid_name; // 更新或创建数据库记录 // 注意:updateOrCreate第一个参数是查询条件,需根据实际业务补充,比如指定id ExperienceUs::updateOrCreate( // ['id' => 1], // 示例条件,根据你的需求调整 ['video' => $vid_url] );
关键提示
- 必须引入
File门面来处理目录创建操作 updateOrCreate的第一个参数是查询条件,如果不指定,每次调用都会生成新的数据库记录,务必根据业务场景补充该条件,确保是更新指定记录而非重复创建
内容的提问来源于stack exchange,提问作者procoder3000
相关产品推荐
相关产品推荐

