Angular上传进度报告不正确
创始人
2024-10-29 10:00:43
0次

要解决Angular上传进度报告不正确的问题,可以尝试以下方法:

  1. 使用HttpClient模块的observe选项:

    import { HttpClient, HttpEventType } from '@angular/common/http';
    
    constructor(private http: HttpClient) { }
    
    uploadFile(file: File) {
      const formData = new FormData();
      formData.append('file', file);
    
      this.http.post('upload-url', formData, {
        reportProgress: true,
        observe: 'events'
      }).subscribe(event => {
        if (event.type === HttpEventType.UploadProgress) {
          const progress = Math.round(100 * event.loaded / event.total);
          console.log(`Upload progress: ${progress}%`);
        } else if (event.type === HttpEventType.Response) {
          console.log('Upload complete');
        }
      });
    }
    
  2. 使用XMLHttpRequest对象:

    uploadFile(file: File) {
      const formData = new FormData();
      formData.append('file', file);
    
      const xhr = new XMLHttpRequest();
      xhr.open('POST', 'upload-url', true);
    
      xhr.upload.addEventListener('progress', event => {
        if (event.lengthComputable) {
          const progress = Math.round(100 * event.loaded / event.total);
          console.log(`Upload progress: ${progress}%`);
        }
      });
    
      xhr.onreadystatechange = () => {
        if (xhr.readyState === XMLHttpRequest.DONE) {
          console.log('Upload complete');
        }
      };
    
      xhr.send(formData);
    }
    
  3. 使用第三方库ngx-uploadx:

    import { UploadxOptions, UploadState, UploadxService } from 'ngx-uploadx';
    
    constructor(private uploadService: UploadxService) { }
    
    uploadFile(file: File) {
      const options: UploadxOptions = {
        url: 'upload-url',
        concurrency: 1,
        autoUpload: true,
        allowedTypes: '.png, .jpg',
        headers: {
          Authorization: 'Bearer ' + localStorage.getItem('token')
        },
        onProgress: (state: UploadState) => {
          const progress = Math.round(100 * state.loaded / state.total);
          console.log(`Upload progress: ${progress}%`);
        },
        onCompleteItem: (item, response, status, headers) => {
          console.log('Upload complete');
        }
      };
    
      this.uploadService.handleFiles([file], options);
    }
    

以上方法中,第一种方法使用了Angular的HttpClient模块来发送HTTP请求,并使用observe选项和HttpEventType来获取上传进度和完成状态。第二种方法使用了原生的XMLHttpRequest对象来发送请求,并监听progress事件和readystatechange事件来获得上传进度和完成状态。第三种方法使用了第三方库ngx-uploadx,它提供了更多的功能和配置选项来处理文件上传,并通过回调函数提供了上传进度和完成状态的通知。根据需求选择适合的方法来解决问题。

相关内容

热门资讯

分享一款!闲游透视挂功能脚本,... 分享一款!闲游透视挂功能脚本,闲游竟然真的是有透视挂脚本闲游辅助器是一种具有地方特色的麻将游戏,要想...
玩家必备教程!新老夫子辅助器功... 玩家必备教程!新老夫子辅助器功能方法,新老夫子都是真的是有辅助器方法在进入新老夫子软件靠谱后,参与本...
大神推荐!微乐跑得快开挂功能方... 大神推荐!微乐跑得快开挂功能方法,微乐跑得快确实存在有开挂方法进入游戏-大厅左侧-新手福利-激活码辅...
热点推荐!吕梁打七透视挂功能技... 热点推荐!吕梁打七透视挂功能技巧,吕梁打七果然是有透视挂技巧1、首先打开吕梁打七辅助器下载最新版本,...
科技介绍!点我棋牌辅助功能神器... 科技介绍!点我棋牌辅助功能神器,点我棋牌总是有辅助神器点我棋牌辅助器是一种具有地方特色的麻将游戏,要...
揭秘几款!对战互娱开挂功能技巧... 揭秘几款!对战互娱开挂功能技巧,对战互娱一直是有开挂技巧1、对战互娱免费辅助多个强度级别选择2、对战...
揭秘!大热门辅助功能工具,大热... 揭秘!大热门辅助功能工具,大热门本来真的有辅助工具1、揭秘!大热门辅助功能工具,大热门本来真的有辅助...
分享开挂内幕!九九联盟透视功能... 分享开挂内幕!九九联盟透视功能软件,九九联盟总是真的有透视软件1、下载好九九联盟透视辅助下载之后点击...
查到实测!澳门太阳城透视功能插... 查到实测!澳门太阳城透视功能插件,澳门太阳城好像存在有透视插件1、澳门太阳城辅助器安装包、澳门太阳城...
揭秘真相!江汉游戏透视挂功能教... 揭秘真相!江汉游戏透视挂功能教程,江汉游戏好像存在有透视挂教程1、江汉游戏辅助器安装包、江汉游戏辅助...