首页 > 解决方案 > 如何在 Uploadcare Widget 中实现 minDimensions

问题描述

可以将设置添加到 Uploadcare,如下所示:

var myDialog = uploadcare.openDialog(null, {
    imagesOnly: true,
    multiple: true,
    multipleMin: 1
    multipleMax: 7
});

现在是怎么minDimensions设置的?文档显示minDimensions(800x600),但该符号不起作用。以下尝试不起作用:

var myDialog = uploadcare.openDialog(null, {
    imagesOnly: true,
    multiple: true,
    multipleMin: 1
    multipleMax: 7,
    minDimensions: '800,600'
});

以下也不起作用:

var myDialog = uploadcare.openDialog(null, {
    imagesOnly: true,
    multiple: true,
    multipleMin: 1
    multipleMax: 7,
    minWidth: 800,
    minHeight: 600
});

此外,尚不清楚如果上传的图像尺寸小于这些设置会发生什么。小部件是否显示错误?

标签: uploadcare

解决方案


minDimensions以及minWidthminHeight不是小部件选项。该链接是指文件验证文档。文件验证是在文件完全上传之前调用的函数,并且可以访问 fileInfo 对象,以便您可以检查文件参数(大小、名称、图像尺寸等)并在某些参数不匹配时中止上传要求。

要设置图像尺寸验证器,您需要先定义一个验证函数

function minDimensions(width, height) {
  return function(fileInfo) {
    var imageInfo = fileInfo.originalImageInfo;
    if (imageInfo !== null) {
      if (imageInfo.width < width || imageInfo.height < height) {
        throw new Error('dimensions');
      }
    }
  }
}

然后,当您打开对话框时,将验证函数添加到对话框设置中的验证器数组

var myDialog = uploadcare.openDialog(null, {
    imagesOnly: true,
    multiple: true,
    multipleMin: 1,
    multipleMax: 7,
    validators: [minDimensions(800, 600)]
});

如果文件未通过验证,小部件将显示默认错误消息 - “无法上传”,但您可以使用 UPLOADCARE_LOCALE_TRANSLATIONS 选项自定义错误消息

UPLOADCARE_LOCALE_TRANSLATIONS = {
  // messages for widget
  errors: {
    'dimensions': 'The image has to be 800x600px or larger.'
  },
  // messages for dialog’s error page
  dialog: { tabs: { preview: { error: {
    'dimensions': {
      title: 'Error.',
      text: 'The image is too small. Try to upload another one.',
      back: 'Back'
    }
  } } } }
};

推荐阅读