在 Aurelia-Typescript 中上传之前如何检查图像的大小和扩展?

How to check size and extension of an image before upload in Aurelia-Typescript?

我正在尝试在 Aurelia/Typescript 中上传之前检查图像大小和扩展名。 为此:我有两个 classes: IE。 徽标-extension.ts

export class LogoExtension {
  private logoExtension: string;

  constructor(logoExtension) {
       if (!(/(.png|.jpg|.jpeg)$/.test(logoExtension))) {
      throw "logo is in invalid format";
    }
    this.logoExtension = logoExtension;
  }

我的标志-size.ts是:

 export class LogoSize {
  private logoSize: number;
  private maximumLogoSize: number = 25000000;

  constructor(logoSize) {

    if (logoSize === undefined) {
      logoSize = "";
    }
    if (logoSize > this.maximumLogoSize) {
      throw "logo size should be less than 25MB"
    } else {
      this.logoSize = logoSize;
    }
  }
}

但问题是,主要是class,

logo.ts

,我无法获取我上传的图像的扩展名和大小,该图像由 aurelia 的 files.bind 访问。 我使用了以下内容:

 getExtension(filename) {
    var parts = filename.split('.');
    return parts[parts.length - 1]
  }

  getSize(logo) {
    let inputFile = document.getElementById("file");
    return inputFile[0].size;
  }

还有

 var x = document.getElementById('input'); // get the file input element in your form
    var f = x.files.item(0);

第二行的files总是报错。 我不想使用任何外部 package/dependency。

为代码

  getSize(logo) {
    let inputFile = document.getElementById("file");
    return inputFile[0].size;
  }

它给你错误,因为它不知道 document.getElementById('file') 查询的元素上的 属性 .size。您的意思是:document.getElementById('file').files?

如果是这样,你还需要将其转换为HTMLInputElement:

let inputFile = (document.getElementById('file') as HTMLInputElement).files;