我正在编写一个代码来上传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
1条答案
按热度按时间ohtdti5x1#
(You应该在代码中添加类型)。问题可能来自
Array.from(event.target.files)
。Forkjoin期望一个流,但你给出了undefined。在上传文件之前,请检查文件列表是否未定义。