Laravel 5.3:从存储中删除图像

时间:2017-04-30 12:15:53

标签: laravel laravel-5.3

我有一个方法可以删除属于它的产品和图片,但我无法删除该图片。

我在哪里错了?

public function deleteProduct($ids)
{
    foreach ($ids as $id => $value) {
        $product = Product::find($id);
        $productImage = $product->image_path;
        if ($productImage) {
            Storage::delete($productImage);
            $product->destroy($id);
        }
    }
}

我在存储和公用文件夹之间有一个符号链接。

存储图像位于例如 - storage / app / public / images / products / 4 / image.png

在public - public / storage / images / products / 4 / imagep.png

图片路径存储在数据库中 - /storage/images/products/4/ACTCMRcYlWR8Bn3ZxoJ7bpiDJ7.png

3 个答案:

答案 0 :(得分:3)

我必须在路径中添加删除'/ storage'部分并添加'/ public'。

$productImage = str_replace('/storage', '', $product->image_path);

Storage::delete('/public' . $productImage);

答案 1 :(得分:0)

我会在我的模型或助手中写这样的东西,并在我想要的时候调用它:

public static function delete_file($path)
{
    if (\Storage::disk('public')->exists($path))
        \Storage::disk('public')->delete($path);
}

答案 2 :(得分:0)

如果您在路径中添加了 /storage 部分,您可以使用文件系统:

if (File::exists(public_path($image->path))) {
            File::delete(public_path($image->path));
}