Laravel:如何将图像或文件发送到 API

Posted

技术标签:

【中文标题】Laravel:如何将图像或文件发送到 API【英文标题】:Laravel : How to send image or file to API 【发布时间】:2017-02-28 23:23:25 【问题描述】:

我有一个 API(由 Lumen 创建)来从客户端保存图像或文件。

这是我的 API 代码

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

    $fileName = $image->getClientOriginalName();
    $destinationPath = base_path() . '/public/uploads/images/product/' . $fileName;
    $image->move($destinationPath, $fileName);

    $attributes['image'] = $fileName;

我已经在 postman 中试用了 API,一切顺利,图片上传成功。

从客户端发送图像(调用 API)并将图像保存在 API 项目中的最佳做法是什么? 因为我的代码不起作用..

这是我尝试在客户端接收图像文件,然后调用 API 时的代码。

if ($request->hasFile('image')) 
    $params['image'] = $request->file('image');


$data['results'] = callAPI($method, $uri, $params); 

【问题讨论】:

要保存图片吗? 是的,发送图片到API,保存到API公用文件夹中 一个选项是以 base 64 编码文件并通过 POST 发送。但是您需要更改“服务器”代码源 为此,您需要使用base64对其进行解码,然后才能将其保存在公共文件夹中。 【参考方案1】:

下面的简单代码可以让我使用邮递员 (API) 上传文件:

这段代码也有一些验证。

如果有人需要,只需将以下代码放入您的控制器。

来自邮递员:使用 POST 方法,选择正文和表单数据,选择文件并使用图像作为键,然后从您需要上传的值中选择文件。

public function uploadTest(Request $request) 

    if(!$request->hasFile('image')) 
        return response()->json(['upload_file_not_found'], 400);
    
    $file = $request->file('image');
    if(!$file->isValid()) 
        return response()->json(['invalid_file_upload'], 400);
    
    $path = public_path() . '/uploads/images/store/';
    $file->move($path, $file->getClientOriginalName());
    return response()->json(compact('path'));
 

【讨论】:

【参考方案2】:

事实上,如果不通过表单邮寄,您将无法做到这一点。

另一种方法是发送远程 url 源并在 API 中下载,如下所示:

if ($request->has('imageUrl')) 

    $imgUrl = $request->get('imageUrl');
    $fileName = array_pop(explode(DIRECTORY_SEPARATOR, $imgUrl));
    $image = file_get_contents($imgUrl);

    $destinationPath = base_path() . '/public/uploads/images/product/' . $fileName;

    file_put_contents($destinationPath, $image);
    $attributes['image'] = $fileName;

【讨论】:

以上是关于Laravel:如何将图像或文件发送到 API的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 laravel 控制器发送到 vuejs

laravel rest api将文件上传到服务器

使用邮递员将文件发送到 Laravel API

如何使用 c socket api 发送文件。

如何使用 web api 将图像和文本从 android 应用程序发送到 sql server

如何使用 React 将本地图像而不是 URL 发送到计算机视觉 API