我在智慧的尽头试图在Laravel中使用StoreAs方法来存储一个未被html文件处理程序附加的图像,并且已经通过“File”类型的请求发送。
我使用croppie创建了一个裁剪图像:https://foliotek.github.io/Croppie/
然而,croppie似乎并没有为我提供一个简单的解决方案来将裁剪的图像附加到标准的html文件处理程序。因此,我决定将图像信息和图像名称附加到隐藏文件元素,并将其与我的发布请求一起发送到我的laravel实例。但是,我现在的问题是我想使用StoreAs方法,因为它允许我将我的图像附加到我可以检索的特定网址,这在我检索大量图像时非常有用。
Laravel中的StoreAs()方法显然只允许使用UploadedFile类型的对象,该对象基于Symfony \ Component \ HttpFoundation \ File \ UploadedFile类。当在html中使用文件处理程序时,这个UploadedFile对象显然会随文件一起发送。
我有一个类似于此的base64编码图像:data:image / png; base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAgAElEQVR4nOy9d3RUZ5ruuyvnnJNyzpEgcg4mO + e23U7t3Hl6wu2ZOTPn3Dtn8unTTTAYMGBjbDAYCZRBApRIkkpSqZ 和图像名称。
我发现我自己可以在Laravel中创建一个UploadedFile对象,但我很难理解如何创建这个UploadedFile然后使用StoreAs()方法将它链接到生成的url。
我在此处找到了此链接:Laravel - file path to UploadedFile instance 这一个在这里:https://gist.github.com/m241802/0b5d0a98318304ff08cf
但是我仍然没有完全了解如何从我拥有的图像和图像名称中创建UploadedFile对象。
有谁知道如何做到这一点?甚至可以建议一个更优雅的解决方案来解决我的问题?也许有人有一个更好的解决方案,我可以在使用croppie库后如何在post请求中发送File对象?
提前感谢您的帮助!
答案 0 :(得分:3)
试试这个:
$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));