【问题标题】:How to get multiple images in laravel api?如何在 laravel api 中获取多个图像?
【发布时间】:2019-07-10 23:45:05
【问题描述】:

我正在为投诉创建一个 laravel API。此代码未在数据库中保存多个图像,我必须在数组中的 JSON 响应中显示多个图像。我正在使用 array_get 但它不适合我。我已经尝试了很多东西,但它没有将图像保存在数据库中。我不知道。我正在将图像保存在其他表中。

public function Complains(Request $request)
{
    $response = array();
    try {
        $allInputs = Input::all();
        $userID = trim($request->input('user_id'));
        $cordID = trim($request->input('cord_id'));
        $phone = trim($request->input('phone'));
        $address = trim($request->input('address'));
        $description = trim($request->input('description'));
     // $image = array_get($allInputs, 'image');

        $validation = Validator::make($allInputs, [
            'user_id' => 'required',
            'cord_id' => 'required',
            'phone' => 'required',
            'address' => 'required',
            'description' => 'required',
        ]);
        if ($validation->fails()) {
            $response = (new CustomResponse())->validatemessage($validation->errors()->first());
        } else {

            $checkRecord = User::where('id', $userID)->get();

            if (count($checkRecord) > 0) {

                $complainModel = new Complains();
                $complainModel->user_id = $userID;
                $complainModel->cord_id = $cordID;
                $complainModel->phone_no = $phone;
                $complainModel->address = $address;
                $complainModel->description = $description;
                $saveData = $complainModel->save();

                if ($saveData) {
                    if ($request->file('image')) {
                        $path = 'images/complain_images/';
                        // return response()->json(['check', 'In for loop']);
                        foreach ($request->file('image') as $image) {
                            $imageName = $this->uploadImage($image, $path);

                            $ImageSave = new ComplainImages();
                            $ImageSave->complain_id = $complainModel->id;
                            $ImageSave->image_url = url($path . $imageName);
                            $ImageSave->save();
                        }
                    }
                    $jsonobj = array(
                        'id' => $userID,
                        'name' => $cordID,
                        'email' => $phone,
                        'phone' => $address,
                        'description' => $description,
                    );
                    return Response::json([
                        'Exception' => "",
                        'status' => 200,
                        'error' => false,
                        'message' => "Complain Registered Successfully",
                        'data' => $jsonobj

                    ]);
                }
            }else{
                $response = (new CustomResponse())->failResponse('Invalid ID!');

            }

        }
    } catch (\Illuminate\Database\QueryException $ex) {
        $response = (new CustomResponse())->queryexception($ex);
    }
    return $response;
}

public function uploadImage($image, $destinationPath)
{
    $name = rand() . '.' . $image->getClientOriginalExtension();
    $imageSave = $image->move($destinationPath, $name);
    return $name;
}

【问题讨论】:

    标签: php laravel api


    【解决方案1】:

    循环allImages 时出错。要保存多张图片,请尝试以下代码

    foreach($request->file('image') as $image)
    {
         $imageName = $this->uploadImage($image, $path);
         // other code here
    }
    

    检查你是否到达循环

    return response()->json(['check': 'In for loop'])
    

    【讨论】:

    • 保存多张图片时遇到的具体错误是什么?
    • 当我使用 foreach 循环时没有错误。它给了我成功的响应,但没有在数据库中保存图像,其他信息正在保存,如地址、描述等。
    • 您确定它到达了foreach 循环吗?尝试在此处添加return 以确保。
    • 更新答案。在图像的 foreach 循环之前添加这一行。
    • 我没有进入 foreach 循环。
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2017-03-30
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多