首页 > 解决方案 > Laravel 从 API 上传图片

问题描述

我正在尝试使用 API 上传图片。即使在运行第一个测试之后,数据库只存储了目录而不是文件名,最糟糕的是,它存储了存储图像所需的目录之前的所有目录。

正在存储什么

我用于商店的代码如下:

public function store(Request $request)
    {

        $image = $request->file('image');

        if($image == null){
            $imagesDir = 'subjectImgs/';
            $images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
            $fileDir = $images[array_rand($images)];
            $path = $fileDir;
        } else {
            $path = $image->storeAs('uploads/images/store/',  $image->getClientOriginalName(), 'public');
        }

        $subject = new Homework([
        'subject_id' => $request->subject_id,
        'user_id' => auth()->user()->id, 
        'title' => $request->name,
        'image' => $path,
        'progress' => $request->progress,
        'description' => $request->description,
        'duedate' => $request->date
        ]);

        $subject->save();

        return response()->json([
        "code" => 200,
        "message" => "Homework added successfully"
        ]);
    }

我是从移动设备上传的,我相信这个信息也很重要(?)在模拟器中也有同样的问题。

标签: laravel

解决方案


$path存入$subject->image等于public_path() . '/uploads/images/store/';. $file->getClientOriginalName()如果你想要文件名,你应该添加:

$subject = new Homework([
   ...
   'image' => $path . $file->getClientOriginalName(),
   ...
]);


推荐阅读