0

我将 Laravel (5.5) 与Backpack一起使用。Backpack 包含Cropper jQuery 插件,允许您在上传之前裁剪图像。

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

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

我已经阅读了 Cropper 文档,但我不确定哪种方法会以全尺寸(裁剪之前)返回图像数据,以及该数据是否包含在表单提交中(不认为是)。

我有两个问题:

  1. 完整的图像是否已经发送到服务器(除了裁剪的版本),如果是,保存它的字段的名称是什么?
  2. 如果以上为假,是否有一个cropper 类的方法会返回给我图像数据,然后我可以在单独的字段中发送到服务器?

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

提前致谢。

4

1 回答 1

1

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

  1. 在客户端,我添加了一个名为fullImageDatain的隐藏字段resources/view/vendor/backpack/crud/fields/image.blade.php。然后,我在 submit 方法中添加了以下 JavaScript 行作为匿名函数,该方法遵循在同一文件中设置裁剪版本的值的行(大约第 189 行):

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

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

我希望这可以帮助处于相同情况的其他人。

于 2018-01-05T12:19:51.030 回答