【问题标题】:laravel - multi upload and save different filename to databaselaravel - 多次上传并将不同的文件名保存到数据库
【发布时间】:2017-02-05 21:10:14
【问题描述】:

我想上传多张图片并将不同的文件名保存到数据库。

我有一个 HTML 代码:

<input type="file" id="upload_file" name="image[]" multiple/>

还有一个数据库表:

id 
image1 
image2 
image3 
image4 
image5 
created_at 
updated_at

能不能这样?

【问题讨论】:

  • 您需要帮助的具体问题是什么?是的,您可以上传 5 张图片并将其名称存储在数据库中。
  • 把它们分成不同id的不同记录会不会更好?像 ID、文件名、图像(BLOB?)、创建时间、更新时间

标签: php html mysql laravel eloquent


【解决方案1】:

image[] 是一个数组。您可以通过这种方式将数组元素存储在不同的列中:

public function store(Request $request)
{
    $model=new Model();
    $model->image1=$request->image[0];
    $model->image2=$request->image[1];
    $model->image3=$request->image[2];
    ...
    $model->save();
}

正常方式:

$image=$_POST['image'];
INSERT INTO table (image1,image2,image3...)VALUES('$image[0]','$image[1]','$image[2]...);

【讨论】:

    【解决方案2】:

    我相信正确的方法是制作一个Image 模型和对应的表,然后你会设置它与其他模型的关系。比如:

    public function store(Request $request)
    {
        $model = new RelatedModel(); // This is a related model example
    
        $images = $request->file("image.*");
        foreach($images as $uploadedImage)
        {
            $path = $uploadedImage->store('path/images', 'local'); // disk can be null, it will then use the default disk in filesystems.php
            $image = new Image();
            // A way you want to use to give the image a name
            $image->name = $this->generateName(); 
            $image->path = $path;
            // Where relatedModel is the method on Image model defining a belongsTo relation for example with RelatedModel
            $image->relatedModel()->associate($model); 
            $image->save();
        }
    
    }
    

    我不知道您为什么以问题中指定的方式保存图片。但是如果你坚持,你必须添加新的字段

    id | image1 | image1_name | image2 | image2_name ...
    

    然后在你的代码中:

    public function store(Request $request)
    {
        $model=new Model();
    
        // This is a function you would make to generate a different name than the path
        $model->image1_name = $this->generateName(); 
        $model->image1 = $request->file("image.0");->store('path/images', 'local');
        $model->image2_name = $this->generateName(); 
        $model->image2 = $request->file("image.1");->store('path/images', 'local');
        // ...etc.
    
        $model->save();
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 2021-09-16
      相关资源
      最近更新 更多