Как проверить размер и расширение изображения перед загрузкой в ​​Aurelia-Typescript? - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь проверить размер и расширение изображения перед загрузкой в ​​Aurelia / Typescript. Для этого: у меня есть два класса: т.е. lo go -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;
  }

и мой lo go -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;
    }
  }
}

, но проблема в том, что в основном классе

lo go .ts

я не могу получить расширение и размер загружаемого изображения, к которому обращается файл 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 во второй строке всегда выдает ошибку. Я не хочу использовать какой-либо внешний пакет / зависимость.

1 Ответ

1 голос
/ 26 января 2020

Для кода

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

выдается ошибка, поскольку он не знает свойства .size вашего элемента, запрашиваемого document.getElementById('file'). Вы имели в виду: document.getElementById('file').files?

Если это так, вам также нужно привести его к HTMLInputElement:

let inputFile = (document.getElementById('file') as HTMLInputElement).files;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...