gpt4 book ai didi

jquery - VichUploaderBundle & Cropit - 将 base64 传递给 File 实例

转载 作者:行者123 更新时间:2023-12-01 07:49:43 26 4
gpt4 key购买 nike

首先,由于英语不是我的母语,请原谅我的错误。

我正在尝试通过 Symfony2 开发我的第一个项目。但是我被文件上传困住了。因此,我安装了 VichUploaderBundle,它提供了我需要管理的内容:所有类型的上传媒体(主要是图像)。

为什么我需要上传图片?我的项目中有用户,他们可以编辑他们的个人资料。所以,我有一个实体 ProfilePicture 应该管理上传,这要归功于 VichUploaderBundle。当使用提交按钮或使用 ajax 发送表单时,它可以完美地工作。

但是,为了改善用户体验,我还添加了一个 jQuery 插件 (Cropit)。 Cropit 给出裁剪图片的 base64。我使用 ajax 发送整个内容。

并且知道...我很挣扎。我一直在互联网上到处搜索,寻找有想法的人,我已经阅读了所有文档,试图找到另一种方法来完成我想做的事情。

这是我实际的“测试”代码:

$base64 = $request->request->get('base64');
preg_match('/data:([^;]*);base64,(.*)/', $base64, $matches);
$data = base64_decode($matches[2]);
$ui = uniqid().'.png';
$file = 'images/profile_pictures/'. $ui;
file_put_contents($file, $data);

$picture = new File($file);

$profile->getPicture()->setImageFile($picture);

这允许我将裁剪后的图片保存在想要的目录中。然而,这并不是我真正想要的。事实上,我只是想找到一种方法将我的 base64 内容转换为 $profile->getPicture()->setImageFile() 中存在的内容(如果我刚刚发送了一张图片)。我很含糊,很抱歉。这是我第一次创建上传系统。

我认为可能有一种方法可以避免发送 Base64。但我们能用这类数据做什么呢?我们可以使用 jQuery 对其进行解码并转换我的表单以发送表单,就像我只选择我的图片并想要保存整个图片一样吗?

您如何在项目中管理这一点?还有比这个更好的其他 bundle 吗?我一直在寻找,没有成功。 SonataMediaBundle 似乎太大了,无法满足我的需求,而且我也找不到办法用它保存裁剪后的图片。

我在VichUploaderBundle的Git上找到了想管理的人。然而,他的问题在给出更好的答案之前就被关闭了...... https://github.com/dustin10/VichUploaderBundle/issues/223

预先感谢您的帮助!

最佳答案

该问题已关闭,因为它不适合 bundle 的范围。 VichUploaderBundle 基本上通过表单将 UploadedFile 对象映射到实体,仅此而已。

您的问题的关键字是“UploadedFile” 和“forms”。

如果您必须以 Base64 编码的字符串、原始字节等形式发送文件,那么您必须将其转换为 UploadedFile 才能使其与 VichUploaderBundle 配合使用。我猜是DataTransformer可以做到这一点。它可以解码 Base64 编码的字符串并将其存储在临时文件中,该文件可用于 build an UploadedFile object .

关于jquery - VichUploaderBundle & Cropit - 将 base64 传递给 File 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com