如何在 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 或 PHP 中制作 Web 应用程序的桌面 .exe?