无法删除存储在存储器中的文件

时间:2020-08-06 13:50:54

标签: laravel file-upload laravel-7

卡住了删除要保存到存储目录中的文件。我的配置文件如下所示。

config /文件系统

'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

这就是我保存图像的方式。

if ($request->hasFile('image'))
    {
        $image = $request->file('image');
        Storage::disk('public')->put("/uploads/".$image->hashName(),  File::get($image));
        $input['image'] = 'uploads/' . $image->hashName();
    }

我正在使用Laravel 7,并且图像已成功上传,有人可以建议我删除存储在其中的文件的最佳方法。

2 个答案:

答案 0 :(得分:1)

如果您希望Laravel自动管理将给定文件流式传输到您的存储位置,则可以使用putFileputFileAs方法。此方法接受Illuminate\Http\FileIlluminate\Http\UploadedFile实例,并将文件自动流式传输到所需位置:

use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;

// Automatically generate a unique ID for file name...
Storage::putFile('photos', new File('/path/to/photo'));

// Manually specify a file name...
Storage::putFileAs('photos', new File('/path/to/photo'), 'photo.jpg');

关于putFile方法,需要注意一些重要事项。请注意,我们仅指定目录名称,而不指定文件名。默认情况下,putFile方法将生成一个唯一的ID作为文件名。因此,在您的情况下,您无需使用$image->hasName()

putFile()还返回文件保存的路径。所以...

$path = Storage::putFile('photos', new File('/path/to/photo'));
//To delete it
Storage::delete($path);

答案 1 :(得分:1)

您可以使用以下方式存储图像:

if(request('image'))
{
     $table_column_name = request('image')->hashName();
     request('image')->store('public/uploads/');
}

您可以使用以下方法删除图像:

$data = MODAL_NAME::findOrFail($id);
Storage::delete('public/uploads/'.$data->image);