typescript Angular:Rxjs:尝试上载文件时出现错误“您在需要流的地方提供了'undefined'

wbgh16ku  于 2023-05-19  发布在  TypeScript
关注(0)|答案(1)|浏览(212)

我正在编写一个代码来上传Angular中的文件。
这是我的服务文件:

upload(file: File): Observable<any> {
    const formData: FormData = new FormData();
   
    let url = `some_url`;

    if (file) {
      formData.append('file', file, file.name);
    }

    const req = new HttpRequest('POST', url, formData);
    
    return this.http.request(req)
       .pipe(
         catchError((error):any => of({err: error, fileName: file.name, failed: true}))
       )

}

这是我的组件文件:

import {
  Observable,
  forkJoin
} from 'rxjs';

fileUploads:any = [];

onFilesSelected(event) {
    if (Array.from(event.target.files).length < 1) {
      return
    }
    this.sendFiles(Array.from(event.target.files)).subscribe({
      next: fileUploads => { this.fileUploads = fileUploads; },
      complete: () => {
         console.log("this.fileUploads", this.fileUploads)
      }
    });
}

sendFiles(files): Observable<unknown> {
    return forkJoin(
      files.map(file => this.uploadService.upload(file))
    );
}

我已经尝试过上面的代码,但我一直得到同样的错误。我使用Angular 15和rxjs -> 7.5

ohtdti5x

ohtdti5x1#

(You应该在代码中添加类型)。问题可能来自Array.from(event.target.files)。Forkjoin期望一个流,但你给出了undefined。
在上传文件之前,请检查文件列表是否未定义。

const listFiles: any[] = Array.from(event.target.files) ?? [];
this.sendFiles(listFiles).subscribe...

相关问题