Laravel从API上传图像

Laravel从API上传图像,laravel,Laravel,我正在尝试使用API上传图像。尽管在运行第一个测试后,数据库只存储了目录而不是文件名,但最糟糕的是,它存储了存储映像所需目录之前的所有目录 我在商店中使用的代码如下: public function store(Request $request) { $image = $request->file('image'); if($image == null){ $imagesDir = 'subjectImgs/';

我正在尝试使用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"
        ]);
    }

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

您正在将
$path
保存到
$subject->image
中,这相当于
public\u path()/上载/图像/存储/'。如果需要文件名,应添加
$file->getClientOriginalName()

$subject=新作业([
...
'image'=>$path.$file->getClientOriginalName(),
...
]);

您正在将
$path
保存到
$subject->image
中,该路径等于
公共路径()/上载/图像/存储/'。如果需要文件名,应添加
$file->getClientOriginalName()

$subject=新作业([
...
'image'=>$path.$file->getClientOriginalName(),
...
]);

您正在设置
'image'=>$path,
以及在此之前的
$path=public\u path()/上载/图像/存储/'生成预期结果

现在,如果只想保存表单输入,可以使用以下代码:


        $image = $request->file('image');
        $path = $image->storeAs('uploads/images/store/',  $image->getClientOriginalName(), 'public');


其中“public”是此处文档中描述的默认公共文件系统:

您正在设置
'image'=>$path,
以及在此之前的
$path=public\u path()/上载/图像/存储/'生成预期结果

现在,如果只想保存表单输入,可以使用以下代码:


        $image = $request->file('image');
        $path = $image->storeAs('uploads/images/store/',  $image->getClientOriginalName(), 'public');


其中“public”是此处文档中描述的默认公共文件系统:

这似乎可行,但当我尝试从移动设备上载图像时,没有存储任何内容。在这段代码中,服务器端发生的一切,请尝试调试有关移动问题的前端。请让我上载我获得的更新代码。我曾尝试使用失眠(它比邮递员好)进行调试,但它仍然没有存储图像。现在是代码问题了。在使用
public
文件系统之前,您是否运行了命令
php artisan storage:link
?是的,我确实运行了它这似乎是可行的,但当我尝试从移动设备上载图像时,没有存储任何内容。在这段代码中,服务器端发生了所有事情,试着调试前端关于你的手机问题让我上传我得到的更新代码。我曾尝试使用失眠(它比邮递员好)进行调试,但它仍然没有存储图像。现在是代码问题了。在使用
public
文件系统之前,您是否运行了命令
php-artisan-storage:link