Need assistance with defining own Oservable for validation of file upload in Angular 17

Discussão em 'Angular' iniciado por Zayno lane, Dezembro 9, 2024.

  1. Zayno lane

    Zayno lane Guest

    I'm following a tutorial for file upload in Angular 17, but in the tut, they use Observable. create, which is deprecated in Angular 17. I have read the docs on implementing the new system, but it does not work. Also, in the tut, they use a type Observer<{ [key: string]: any }>, but I cannot assign a type to null, which is this method called observer.next(null);

    import { Observable, Observer } from 'rxjs';

    export const mimeType = (
    control: AbstractControl
    ): Promise<{ [key: string]: any }> | Observable<{ [key: string]: any }> => {
    const file = control.value as File;
    const filereader = new FileReader();
    const fileObserver = new Observable((observer: Observer<any>) => {
    filereader.addEventListener('loadend', () => {
    const arr = new Uint8Array(filereader.result as ArrayBuffer).subarray(
    0,
    4
    );
    let header = '';
    let isValid = false;
    for (let i = 0; i < arr.length; i++) {
    header += arr.toString(16);
    }
    switch (header) {
    case '89504E4':
    isValid = true;
    break;
    case 'ffd8ffe0':
    case 'ffd8ffe1':
    case 'ffd8ffe2':
    case 'ffd8ffe3':
    case 'ffd8ffe8':
    isValid = true;
    break;
    default:
    isValid = false;
    break;
    }
    if (isValid) {
    observer.next(null);
    } else {
    observer.next({ invalidMimeType: true });
    }
    observer.complete();
    });
    filereader.readAsArrayBuffer(file);
    });
    return fileObserver;
    };

    Continue reading...

Compartilhe esta Página