0

我需要存储以表单上传的图像,将图像存储在public/uploads文件夹中并将文件名保存在数据库中,然后不需要显示上传的文件。

我成功地将文件上传到文件public/uploads夹,但它存储的问题是生成的唯一名称,而我存储在 db 中的名称是原始名称。

....
$post_images->image_file_name = $image->getClientOriginalName();
Storage::disk('uploads')->put('prefix_'.$post_id, $image);
$post_images->save();

并且在展示时,

<img src="{{url('/uploads')}}/prefix_{{$images->post_id}}/{{$images->image_file_name}}">

原始文件名 ( public/uploads/some_id/my_original_file_name.png) 的 url 形式,但public/uploads/some_id/unique_name.png具有唯一名称。

如何获取上传文件的唯一名称并将其保存在数据库中?或任何其他方式来实现这一目标?

4

1 回答 1

0

您可以在包含唯一图像路径的数据库(图像表)中创建另一列。

因此,在保存原始图像名称及其路径后,您可以添加另一个保存函数以将唯一图像名称(路径)保存到数据库中。

然后你可以循环穿过你的刀片并获得正确的路径。

它看起来像这样:

// get all images in your controller method and pass those to your view
public index()
{
    $images = DB::table('images') // here you have to put the table name, where your images are saved at
    return view('image.index', compact('images'))
}

在您看来:

// loop through all images and get the path name from your database
@foreach($images as $imageKey => $imageValue)
     <img src="{{ $imageValue->unique_path }}" />
@endforeach

编辑:

要保存唯一的图像名称,您必须这样做:

$image->fill(['unique_image' => $prefix.'_'.$post_id.'.png']); // unique_image is your db column name, if its a png
$image->save();
于 2017-06-18T13:07:49.197 回答