如何使用storeas方法()将base64编码的图像存储在laravel中



我已经智穷于尝试使用Laravel中的StoreAs方法来存储一个html文件处理程序尚未附加的图像,该图像是通过"file"类型的请求发送的。

我使用croppie创建了一个裁剪图像:https://foliotek.github.io/Croppie/

然而,croppie似乎并没有为我提供一个简单的解决方案来将裁剪后的图像附加到标准的html文件处理程序。因此,我决定将图像信息和图像名称附加到一个隐藏的文件元素,并将其与我的帖子请求一起发送到我的laravel实例。然而,我现在的问题是,我想使用StoreAs方法,因为它允许我将图像附加到一个特定的url上,我可以检索该url,当检索大量图像时,我觉得它非常有用。

Laravel中的StoreAs()方法显然只允许使用UploadedFile类型的对象,该对象基于Symfony\Component\HttpFoundation\File\UploadedFile类。当使用html中的文件处理程序时,这个UploadedFile对象显然会与文件一起自动发送。

我有一个base64编码的图像,类似于:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAgAElEQVR4nOy9d3RUZ5ruuyvnnJNyzpEgcg4mO+e23U7t3Hl6wu2ZOTPn3Dtn8unTTTAYMGBjbDAYCZRBApRIkkpSqZ以及图像名称。

我发现我自己可以在Laravel中创建一个UploadedFile对象,但我很难理解如何创建这个UploadedFile,然后使用StoreAs()方法将其链接到生成的url。

我在这里找到了这个链接:Laravel-UploadedFile实例的文件路径这里的这个:https://gist.github.com/m241802/0b5d0a98318304ff08cf

但我仍然不完全明白如何从我的图像和图像名称中创建UploadedFile对象。

有人知道如何做到这一点吗?或者甚至可以为我的问题提出一个更优雅的解决方案??也许有人有一个更好的解决方案,在使用croppie库后,我如何在post请求中发送File对象?

提前感谢您的帮助!

试试这个:

$image = $request->input('image'); // your base64 encoded
$image = str_replace('data:image/png;base64,', '', $image);
$image = str_replace(' ', '+', $image);
$imageName = 'test.png';
File::put(storage_path(). '/' . $imageName, base64_decode($image));

相关内容

  • 没有找到相关文章