我有一个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;
}
我已经在邮递员中尝试了API,一切顺利,图片成功上传。
从客户端发送图像(调用API)并将图像保存在API项目中的最佳做法是什么? 因为我的代码不起作用..
这是我在客户端尝试接收图像文件时的代码,然后调用API。
if ($request->hasFile('image')) {
$params['image'] = $request->file('image');
}
$data['results'] = callAPI($method, $uri, $params);
答案 0 :(得分:3)
嗯,事实是,如果不通过表格发送邮件,你就无法做到。
另一种方法是发送远程网址源并将其下载到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;
}
答案 1 :(得分:0)
下面的简单代码对我来说可以用邮递员(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'));
}