卡住了删除要保存到存储目录中的文件。我的配置文件如下所示。
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,并且图像已成功上传,有人可以建议我删除存储在其中的文件的最佳方法。
答案 0 :(得分:1)
如果您希望Laravel自动管理将给定文件流式传输到您的存储位置,则可以使用putFile
或putFileAs
方法。此方法接受Illuminate\Http\File
或Illuminate\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);