You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何将Intervention流图片直接保存至public/piku文件夹

解决方案

要直接将Intervention处理后的图片流保存到项目根目录的public/piku文件夹,有两种可行方案:

方案一:使用原生文件系统函数(推荐,无需配置)

直接利用Laravel的public_path()辅助函数定位到项目根的public目录,配合file_put_contents写入图片流,同时确保目标目录存在:

$ext = "jpg";
$imageConvert = \Image::make($image->getRealPath())->stream($ext, 60);
$img = rand(10, 100) . '_piku.' . $ext;

// 生成目标目录绝对路径
$targetDir = public_path('piku');
// 递归创建目录(如果不存在)
if (!is_dir($targetDir)) {
    mkdir($targetDir, 0755, true);
}

// 将图片流写入目标文件
file_put_contents($targetDir . '/' . $img, $imageConvert);

说明:

  • public_path('piku')会直接返回项目根目录下public/piku的绝对路径,无需依赖Storage磁盘映射。
  • mkdir的第三个参数true确保递归创建多级目录,避免因父目录不存在导致写入失败。
  • file_put_contents支持直接写入Intervention返回的StreamInterface对象,无需额外转换。

方案二:配置新的Storage磁盘

如果偏好使用Laravel的Storage系统,可以在config/filesystems.php中添加一个指向项目根public目录的磁盘:

'disks' => [
    // ... 保留原有磁盘配置
    'public_root' => [
        'driver' => 'local',
        'root' => public_path(),
        'url' => env('APP_URL') . '/',
        'visibility' => 'public',
    ],
],

之后就可以通过这个新磁盘写入文件:

$ext = "jpg";
$imageConvert = \Image::make($image->getRealPath())->stream($ext, 60);
$img = rand(10, 100) . '_piku.' . $ext;

\Storage::disk('public_root')->put('piku/' . $img, $imageConvert);

内容的提问来源于stack exchange,提问作者Loveyatri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:43:21