首页 文章

在Laravel Backpack Cropper中上传图像时保存原始版本和裁剪版本

提问于
浏览
0

我正在使用Laravel(5.5)和Backpack . 背包包括Cropper jQuery plugin,允许您在上传之前裁剪图像 .

我需要在服务器上保存裁剪版本和完整版本的图像 . 裁剪版本是缩略图,完整版本是放大视图 .

默认情况下,Backpack实现仅保存图像的裁剪版本 . 我保存完整大小的计划是修改Backpack视图以包含一个额外的隐藏字段,该字段将包含完整大小的图像(onsubmit设置隐藏字段的值?) .

我已经阅读了Cropper文档,但我不确定哪种方法会以完整大小(裁剪之前)返回图像数据,如果这些数据包含在表单提交中(不要认为是这样) .

我有两个问题:

  • 是否已将完整图像发送到服务器(除了裁剪版本),如果是,那么保存它的字段的名称是什么?

  • 如果以上是假的,是否有一个cropper类的方法将返回给我图像数据,然后我可以在一个单独的字段中发送给服务器?

第二个问题有点模糊,因为我不确定这个图像上传是如何工作的(似乎在上传之前转换为base64,但如果是这样,那就太惊人了) .

提前致谢 .

1 回答

  • 1

    我最终得到的解决方案包括以下内容:

    • 在客户端,我在 resources/view/vendor/backpack/crud/fields/image.blade.php 中添加了一个名为 fullImageData 的隐藏字段 . 然后我在提交方法上添加了以下JavaScript行作为匿名函数,这些行设置了同一文件中的裁剪版本的值(关于第189行):

    $ mainImage.cropper( '清除'); $ mainImage.cropper('setData',$ mainImage.cropper('getImageData'))var fullImageURL = $ mainImage.cropper('getCroppedCanvas') . toDataURL(file.type); $( '#fullImageData')VAL(fullImageURL) .

    • 在服务器上,在模型中,添加名为 fullImageData 的模型属性(具有任何可见性)和 setFullImageDataAttribute mutator以捕获图像数据(并将其保存到文件中),最后,将 fullImageData 字段添加到$ fillable属性该模型 .

    我希望这能帮助处于同样情况的其他人 .

相关问题