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

时间:2017-12-25 14:09:57

标签: jquery laravel backpack-for-laravel cropper

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

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

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

我已阅读过Cropper文档,但我不确定哪种方法会以完整尺寸(裁剪前)返回图像数据,如果此数据包含在表单提交中(不要认为它)是)。

我有两个问题:

  1. 是否已将完整图像发送到服务器(除此之外) 裁剪版本)如果是这样,那个字段的名称是什么 持有它?
  2. 如果上述内容为假,是否有裁剪方法 将返回的类给我我可以发送的图像数据 到一个单独的字段中的服务器?
  3. 第二个问题有点模糊,因为我并不确定这个图片上传是如何工作的(在上传之前似乎已经转换为base64,但如果是这样的话会令人惊讶)。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

我最终解决的问题包括:

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

    $ mainImage.cropper('明确&#39); $ mainImage.cropper(' setData',$ mainImage.cropper(' getImageData')) var fullImageURL = $ mainImage.cropper(' getCroppedCanvas')。toDataURL(file.type); $('#fullImageData&#39)。VAL(fullImageURL);

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

  3. 我希望在同样的情况下帮助其他人。