首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在laravel 8中多次上传图片的问题

在laravel 8中多次上传图片的问题
EN

Stack Overflow用户
提问于 2021-01-04 02:57:29
回答 2查看 399关注 0票数 0

我必须做一个网上购物网站,我必须在我的产品的表单内进行多次图像上传,然后在我的视图中显示为幻灯片。我尝试了5个教程或它们的概念,但都不起作用。我很沮丧,所以如果你们知道什么,给我打电话。我希望找到最简单和直接的方式在数据库中存储图像并显示它们。我不擅长后端的东西,但我正在努力学习诀窍。

如果你想知道我到目前为止做了什么,我有两张表连接在一起,这两张表是图像和食物。然后,图像表有一个外键,它将从食品表中获取id。这将帮助系统知道哪个图像指的是哪种食物。基于我到目前为止已经尝试过的教程和我尝试过的最好的教程,我把它上传到数据库中,但文件名只显示[]。我也检查了我的公共文件夹,但我找不到我在那里上传的文件。我试图在视图中显示它,但它抛出了一个混乱的错误。正是因为这个功能,我真的感到困惑和紧张。

这是我的控制器中的代码(getwelcome是我的索引):

代码语言:javascript
复制
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');
}

镜像迁移

代码语言:javascript
复制
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');
});

在我看来

代码语言:javascript
复制
@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
EN

Stack Overflow用户

回答已采纳

发布于 2021-01-04 07:00:16

您的错误是在视图中调用json_encode。该字段已经是一个字符串,您需要将其从JSON中“解码”为PHP可以使用的内容:

代码语言:javascript
复制
@foreach (json_decode($image->filename) as $image)

    ...{{ asset('images/'. $image) }}...
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65553692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档