1

可以将设置添加到 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
});

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

4

2 回答 2

2

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'
    }
  } } } }
};
于 2018-10-09T13:28:19.777 回答
1

您需要定义自己的验证器函数并将它们添加到小部件/对话框。minDimensions因此,使用您选择的签名和逻辑编写函数。文档有示例实现imagesOnlymaxDimenstions验证功能。你可以用它们来获得灵感。

当您的验证函数由于某种原因拒绝文件时,您应该抛出错误,例如throw new Error('dimensions'); ,该'dimensions'字符串将用于在您的自定义本地化地图中查找用户友好的消息:

UPLOADCARE_LOCALE_TRANSLATIONS = {
  errors: {
    'dimensions': 'File dimension check failed',
    ...
  },
  ...
}

您可以在此处找到更详细的示例。

于 2018-10-09T13:14:38.263 回答