如何在 PHP Laravel Web 服务中获取照片路径

Posted

技术标签:

【中文标题】如何在 PHP Laravel Web 服务中获取照片路径【英文标题】:How to get a photo path in PHP Laravel web service 【发布时间】:2019-12-02 09:50:20 【问题描述】:

我想使用 php Laravel 创建一个可以存储图像的 Web 服务。 我做了一个表测试,其中包含一个名为Photo 的列。现在我需要制作一个控制器来保存照片文件。

测试台:

Description (string) null
Photo (binary) null

在控制器中:

public function store(Request $request)
    
    $photo = $request->input('photo');

    $data = new Testing();
    $data->Photo = $photo;

    if ( $data->save() ) 
        $res['message'] = 'Success';
        $res['value'] = $data;

        return response ( $res );
     else 
        $res['message'] = 'Failed';

        return response ( $res );
    

但是当我使用邮递员点击它时,我选择二进制作为正文并选择一个 .jpg 文件,它会抛出一个错误,说我的照片文件为空。

你能告诉我如何以正确的方式获取照片路径吗?

【问题讨论】:

将文件存储在存储目录中,并在邮递员发送请求时返回完整路径 是否需要将图像本身存储在数据库中(二进制)?或者你会接受将图像存储在 Laravel 存储目录中并将图像路径(Varchar)存储在数据库中? @OmerAbdelmajeed 我认为这是我应该存储路径的第二个选择。但是当我使用邮递员并转到正文的二进制选项卡时,我怎样才能获得路径?当我选择一个文件时,它只显示 name.jpg 但是当我点击发送时,它给我 null 【参考方案1】:

您需要使用此代码保存照片

            if($request->hasFile('photo'))
                $image = $request->file('photo');
                $destination_path = public_path('/images/');
                $source = "Image".time().'.'.$image->getClientOriginalExtension();
                $image->move($destination_path, $source);
            
            else
                $source = 'default.jpg';
            
            $add_new_photo = new Photo();
            $add_new_photo->photo = $source;
            $add_new_video->created_by = \Auth::user()->name;
            $add_new_video->save();

这会将照片保存在图像文件夹中。确保使用 777 模式创建文件夹。

【讨论】:

我会试一试.. 并会问我是否有另一个错误;D 感谢您的回复【参考方案2】:

你可以这样做:

if($request->hasFile('photo'))
  $image = $request->photo->store('your_image_folder');
  $data->Photo = basename($image);
  ...

store 方法将生成一个唯一的 ID 作为文件名。如果你想命名你的文件使用

$request->photo->storeAs('your_image_folder', 'your_filename')

然后保存$data

【讨论】:

感谢您的回复,但我怎样才能获得文件夹路径?或者人们通常把它放在哪里?对不起新手 您可以将图像存储在公共目录中。使用方法asset获取文件夹路径:asset【参考方案3】:

试试这个,而不是在正文中选择二进制。 您需要在正文中选择表单数据。 并且需要将字段的类型更改为form

【讨论】:

我试过这个,但是当我选择一张图片时,它说该字段为空

以上是关于如何在 PHP Laravel Web 服务中获取照片路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5+ 中获取客户端 IP 地址

如何在Laravel 5+中获取客户端IP地址?

如何在 Laravel 或 PHP 中制作 Web 应用程序的桌面 .exe?

从服务器获取时 Laravel 将 Int 转换为字符串的问题?

如何记录所有 Web 事务 (PHP/Laravel)

部署 Laravel 并在 windows server 中做出反应