我正在使用 laravel 创建一个 REST api,允许用户从他们的 android 设备中选择一个图像文件,然后将其上传到服务器。法师在与其他参数一起发送到服务器之前被转换为 base64。我想将此 base64 转换为文件并将其存储在服务器上,然后生成一个可用于访问它的链接。到目前为止,这是我尝试过的方法,但没有用:我已经创建了一个指向存储的符号链接(symbolic link)
public function create(Request $request)
{
$location = new Location();
$location->name = $request->location_name;
$location->latitude = $request->latitude;
$location->longitude = $request->longitude;
$location->saveOrFail();
$provider = new Provider();
$provider->name = $request->provider_name;
$provider->location_id = $location->id;
$provider->category_id = $request->category_id;
$provider->description = $request->description;
$provider->image = request()->file(base64_decode($request->encoded_image))->store('public/uploads');
$provider->saveOrFail();
return json_encode(array('status'=>'success', 'message'=>'Provider created successfully'));
}
最佳答案
正如 Amando 所说,您可以使用 Intervention/Image包,已经使用了很多年,我可以说它会做你想做的,而且非常好。
不过,我还要补充的是,您可能还想考虑是否确实需要将其存储为文件。
根据它的用途和大小等,您可以考虑将它与任何其他信息一起存储在数据库本身中。这消除了对文件服务器的依赖,并使您的应用程序在基础架构要求方面更加灵活。
归根结底,文件只是数据,如果您总是在获取其他数据时获取文件,请减少步骤并将相关数据放在一起。
不管怎样,希望你能解决它:)
关于php - laravel rest api 上传文件到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889071/