我必须制作一个在线商店网站,并且必须在我的产品表单中上传多张图片,然后在我的视图中将其显示为幻灯片。我尝试了 5 个教程或它们的概念,但没有任何效果。我很沮丧,所以如果你们知道任何事情,请联系我。我希望找到最简单直接的方法将图像存储在数据库中并显示它们。我不擅长后端,但我正在努力学习。
如果你想知道我到目前为止所做的工作是我有两张连接起来的桌子,它们是图像和食物。然后,图像表有一个外键,可以从食物表中获取 id。这将有助于系统知道哪个图像指的是哪种食物。根据我迄今为止尝试过的教程和我尝试过的最好的教程,我将其上传到数据库中,但文件名仅显示 []
。我也检查了我的公共文件夹,但找不到我上传的文件。我试图在视图中显示它,但它抛出了一个混乱的错误。因为这个功能,我真的很困惑和压力。
这是来自我的控制器的代码(getwelcome 是我的索引):
public function getWelcome(Food $foods)
{
$data = Images::all();
return view('welcome', compact('foods', 'data'));
}
public function store(Request $request)
{
$foods = new Food([
'name' => $request->get('name'),
'description' => $request->get('description'),
'price' => $request->get('price'),
// column name => front-end name
]);
$foods->save();
if ($request->hasfile('filename')) {
foreach ($request->file('filename') as $image) {
$name = $image->getClientOriginalName();
$image->move(public_path() . '/images/', $name); // folder path
$data[] = $name;
}
}
$Upload_model = new Images;
$Upload_model->food_id = $foods->id;
$Upload_model->filename = json_encode($data);
$Upload_model->save();
session()->flash('success', 'Food successfully added.');
return redirect()->route('welcome');
}
图片迁移
Schema::create('images', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('food_id');
$table->String('filename');
$table->timestamps();
$table->foreign('food_id')
->references('id')
->on('food')
->onDelete('cascade');
});
在我看来
@foreach($data as $image)
@foreach(json_encode($image->filename)as $picture)
<div class="mySlides fade">
<img src="{{ asset('/images'.$picture) }}" style="width:295px; height:295px">
</div>
@endforeach
@endforeach
答案 0 :(得分:0)
您的错误是在您的视图中调用了 json_encode
。该字段已经是一个字符串,您需要将其从 JSON 中“解码”为 PHP 可以使用的内容:
@foreach (json_decode($image->filename) as $image)
...{{ asset('images/'. $image) }}...
答案 1 :(得分:-1)
if ($files = $request->file('images')) :
foreach ($files as $file) :
$extension = $file->extension();
$imageName = time() . rand(1, 100) . '.' . $extension;
$file->storeAs('/public/image/product/multiple', $imageName);
$arr[] = $imageName;
endforeach;
$image = implode(",", $arr);
$product->m_image = $image;
else :
$image = '';
endif;