首页 > 解决方案 > Laravel 调整中的多个图像上传以添加其他字段

问题描述

我需要上传多张图片。下面的代码运行良好。这是使用干预图像插件。我正在尝试自定义此代码以向此图像模型的父级添加另一个作为 ForeignKey 值的字段。$request 具有来自表单的值。如何将其与图像一起保存?
值为:

$request('vehicle_id')

如何调整以下方法以使 save 也包含此车辆 ID?

public function uploadImage(Request $request) 
        {   
            $request->validate([
                'image' => 'required',
                'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
            ]);


    //check if image exist
    if ($request->hasFile('image')) {
        $images = $request->file('image');

        // create new directory for uploading image if doesn't exist
        if( ! File::exists('images/'.auth()->user()->id)) {
            $org_img = File::makeDirectory('images/'.auth()->user()->id, 0777, true);
        }

        // loop through each image to save and upload
        foreach($images as $key => $image) {
            //create new instance of Photo class
            $newPhoto = new $this->photo;
            //get file name of image  and concatenate with 4 random integer for unique
            $filename = rand(1111,9999).time().'.'.$image->getClientOriginalExtension();
            //path of image for upload
            $org_path = 'images/'.auth()->user()->id . $filename;

            $newPhoto->image     = 'images/'.auth()->user()->id.$filename;

            //don't upload file when unable to save name to database
            if ( ! $newPhoto->save()) {
                return false;
            }

            // upload image to server
            if ($org_img == true) {
               Image::make($image)->fit(900, 500, function ($constraint) {
                       $constraint->upsize();
                   })->save($org_path);
            }


        }
    }

    return redirect('/home')->with('success','Images Uploaded');

}

标签: laravellaravel-5.8

解决方案


我找到了解决方案

public function uploadImage(Request $request) 
    {   
        $request->validate([
            'image' => 'required',
            'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
            'vehicle' => 'required'
        ]);

    //check if image exist
    if ($request->hasFile('image')) {
        $images = $request->file('image');

        // create new directory for uploading image if doesn't exist
        if( ! File::exists('images/'.auth()->user()->id.'/')) {
            $org_img = File::makeDirectory('images/'.auth()->user()->id.'/', 0777, true);
        }

        // loop through each image to save and upload
        foreach($images as $key => $image) {
            //create new instance of Photo class
            $newPhoto = new $this->photo;
            //get file name of image  and concatenate with 4 random integer for unique
            $filename = rand(1111,9999).time().'.'.$image->getClientOriginalExtension();
            //path of image for upload
            $org_path = 'images/'.auth()->user()->id.'/' . $filename;

            $newPhoto->image     = 'images/'.auth()->user()->id.'/' . $filename;
            $newPhoto->vehicle = $request->input('vehicle');
            //don't upload file when unable to save name to database
            if ( ! $newPhoto->save()) {
                return false;
            }
            // upload image to server
           Image::make($image)->fit(900, 500, function ($constraint) {
                   $constraint->upsize();
               })->save($org_path);


        }
    }

    return redirect('/home')->with('success','Images Uploaded');

推荐阅读