Как установить ограничение размера загружаемого изображения (например, максимум 2 МБ) в Angular

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
1
задан Artyom 15 January 2019 в 09:33
поделиться

1 ответ

Согласно документации W3 :

При получении, если используется метод чтения readAsDataURL (), атрибут результата должен возвращать строку DOMString, которая является URL-адресом данных [RFC2397 ] кодирование файла или данных BLOB-объекта.

Таким образом, ваш reader.result имеет значение null или DOMString. DOMString - это строка с 16-битными символами.

Итак, чтобы проверить размер, вы должны:

  1. Проверить, является ли reader.result нулевым, если оно есть, затем выдать ошибку или отклонить обещание

    [114 ]
  2. Проверьте длину вашей строки, зная, что каждый символ равен 2 байта

  3. Бросьте ошибку, если длина * 2 больше 2 ^ 20, на самом деле 2 * 2 ^ 20 - это количество байтов в 2 МБ

Теперь давайте переведем его в код:

  ReadAsBase64(file): Promise<any> {
    const reader = new FileReader();
    const fileValue = new Promise((resolve, reject) => {
      reader.addEventListener('load', () => {
        const result = reader.result as DOMString;
        if (!result) reject('Cannot read variable');
        if (result.length * 2  > 2**21) reject('File exceeds the maximum size'); // Note: 2*2**20 = 2**21 
        resolve(reader.result);
      });

      reader.addEventListener('error', event => {
        reject(event);
      });

      reader.readAsDataURL(file);
    });

    return fileValue;
  }
0
ответ дан Cristian Traìna 15 January 2019 в 09:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: