如何使用 angular2 http API 跟踪上传/下载进度

2023-12-01

因此,有许多临时库支持 Angular2 中的上传/下载进度,我不知道如何使用本机 Angular2 http api 在上传/下载时显示进度。

我想使用原生http api的原因是因为我想利用:

  1. 围绕本机 http api 的 http 拦截器(http API 包装器),用于验证、缓存和丰富正在发送的实际 http 请求,例如this & this
  2. Angular 的 http api 比任何 ad hoc API 都要健壮得多

一篇好文章关于如何使用 Angular 的 http api 进行上传/下载

但文章提到,没有原生方法来支持进展。

有人尝试使用 http api 来显示进度吗?

如果没有,您知道角度存储库中存在此问题吗?


从 Angular 4.3.x 及更高版本开始,可以使用新的实现Http客户端 from @angular/common/http.

阅读监听进度事件部分。

简单的上传示例(从上面提到的部分复制):

    const req = new HttpRequest('POST', '/upload/file', file, {
      reportProgress: true,
    });

    http.request(req).subscribe(event => {
      // Via this API, you get access to the raw event stream.
      // Look for upload progress events.
      if (event.type === HttpEventType.UploadProgress) {
        // This is an upload progress event. Compute and show the % done:
        const percentDone = Math.round(100 * event.loaded / event.total);
        console.log(`File is ${percentDone}% uploaded.`);
      } else if (event instanceof HttpResponse) {
        console.log('File is completely uploaded!');
      }
    });

对于下载来说,它可能几乎是一样的:

    const req = new HttpRequest('GET', '/download/file', {
      reportProgress: true,
    });

    http.request(req).subscribe(event => {
      // Via this API, you get access to the raw event stream.
      // Look for download progress events.
      if (event.type === HttpEventType.DownloadProgress) {
        // This is an download progress event. Compute and show the % done:
        const percentDone = Math.round(100 * event.loaded / event.total);
        console.log(`File is ${percentDone}% downloaded.`);
      } else if (event instanceof HttpResponse) {
        console.log('File is completely downloaded!');
      }
    });

请记住,如果您正在监控下载,Content-Length必须设置,否则无法测量请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 angular2 http API 跟踪上传/下载进度 的相关文章

随机推荐

  • 使用 Indy 执行 IPv6 反向 DNS 查找

    我正在使用 Indy 使用以下代码执行反向 IPv4 查找 function ReverseDNSLookup const IPAddress String const DNSServer String Timeout Retries In
  • Twitter 的 Bootstrap 移动版:更多专栏

    关于twitter bootstrap 我目前有一个设计 在网格中显示图片 div class row fluid div class image span 4 div div class image span 4 div div clas
  • 稀疏矩阵图 matlab

    我有一个 5000 5000 稀疏矩阵 有 4 个不同的值 我想用 4 种不同的颜色可视化非零元素 以便我可以识别这些值的比率以及它们之间的关系 我使用imagesc但我不能很好地识别不同的值 特别是比率较小的值 我认为如果我为每个值使用一
  • plotly choropleth 地图:显示国家/地区名称

    考虑以下 R 代码以绘图方式生成分区统计图 devtools install github ropensci plotly library plotly df lt read csv https raw githubusercontent
  • VB.NET 中具有两个属性的 DistinctBy

    看着选择列表中两个不同的属性可以使用具有两个属性的 DistinctBy 扩展方法 我尝试将其转换为 vb net 但没有得到预期的结果 测试类 Public Class Test Public Property Id As Integer
  • C++ 编译器优化器是否允许破坏我的析构函数被多次调用的能力?

    我们曾经采访过一位非常有经验的 C 开发人员 他无法回答以下问题 C 中派生类析构函数是否需要调用基类析构函数 显然答案是不 C 无论如何都会自动调用基类析构函数 但是如果我们尝试拨打电话怎么办 在我看来 结果将取决于基类析构函数是否可以被
  • 如何截取 Android 布局的屏幕截图?

    我的问题是如何使用内置屏幕截图来截取屏幕截图 任何提示或示例代码将不胜感激 有两种方法你可以尝试 使用Eclipse 在 Eclipse 中打开 设备 视图 窗口菜单 gt 显示视图选项 gt 其他 Android gt 设备 右侧有一个工
  • 如果将 ImageResizer 与 Azure blob 一起使用,我是否需要 AzureReader2 插件?

    我正在开发一个个人项目来管理我的俱乐部的用户 它托管在免费的 Azure 包上 至少目前如此 部分作为试用 Azure 的实验 创建他们的记录的一部分是添加照片 因此我有一个联系人卡片视图 可以让我看到他们是谁 他们何时来以及一张照片 我已
  • 我应该尽可能避免使用 JS 而使用 CSS 吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在寻找最佳实践答案 目前我正在尝试向我网站的导航栏添加一个下拉菜单 我发现我可以使用 CSS 来做到这一点 而且我也可以使用 JS Angular 来做到这一点 我读到过 因为使用 J
  • 使用 Selenium 将元素滚动到视图中

    Selenium 1 x 或 2 x 中是否有任何方法可以滚动浏览器窗口 以便 XPath 标识的特定元素位于浏览器的视图中 Selenium 中有一个 focus 方法 但在 FireFox 中似乎没有物理滚动视图 有人对如何做到这一点有
  • D3.js 如何将力布局的节点排列在圆上

    我开发了一种力量布局来代表社会群体之间的关系 现在我想让节点分布在一个圆圈中 并有链接连接它们 做这个的最好方式是什么 完整版本的代码 没有数据 在这里http jsfiddle net PatriciaW zZSJT 为什么我也必须在这里
  • UICollectionView 和补充视图崩溃

    我有一个 UICollectionView 工作正常 有 2 种方法可以到达此页面 虽然应用程序 点击推送通知 除了一种情况外 一切都很好 如果用户正在聊天 然后退出应用程序 主页按钮 然后他收到一条推送通知 按下它 应用程序崩溃了 cra
  • Matlab - 如何以函数内的字符串形式检索函数调用的确切参数列表?

    假设我有以下功能 function name the paramlist varargin Print out varargin exactly how it is called as a string 基本上我想要它做的是 调用 name
  • 运行 pyinstaller 时出错(1920,“LoadLibraryEx”,“系统无法访问该文件”)

    我试图将我的 python 脚本编译为 exe 以便我可以将其发送给可以使用而无需安装 python 的朋友 但我遇到了问题并且无法找到解决方案 我发现了类似的问题Pyinstaller win32ctypes pywin32 pywint
  • 单击按钮时将道具传递给另一个组件

    在我的 nextJS 应用程序中 我想将一个组件的 props 传递给另一个组件 该组件既不是第一个组件的父组件 也不是第一个组件的子组件 我该怎么做 有一个Orderdiv 内的组件Orders页面和OrderViewer在另一个 div
  • 用 Monadic 咒语召唤 JQuery Deferred

    灵感来自this 优秀 关于在 javascript 中使用 Promises 的讨论 我正在尝试弄清楚如何使用 Deferred 将异步和非异步函数链接在一起 以避免在使用我的 时支付回调税全局存储 code 我有一些与此相关的问题 但我
  • 我如何知道 AppDelegate 中的方向发生了变化

    设备如何知道方向变化的功能是 void viewWillLayoutSubviews 和 void viewDidLayoutSubviews 但是 它们只是在控制器中 现在我想知道是否有类似的函数可以知道文件 AppDelegate m
  • 如何使用 Elixir/phoenix 从 csv 文件导入用户?

    我有一个包含用户列表的 csv 文件以及 UserController 内的以下导入方法 我想通过使用表单提交 csv 文件来导入这些用户 看来我做错了 用户控制器 def import conn user gt user params d
  • 在 Windows Phone 8 上启动 PDF 阅读器

    我正在尝试使用下面的代码启动 pdf 阅读器 但它不起作用 有人可以帮助我吗 private async Task
  • 如何使用 angular2 http API 跟踪上传/下载进度

    因此 有许多临时库支持 Angular2 中的上传 下载进度 我不知道如何使用本机 Angular2 http api 在上传 下载时显示进度 我想使用原生http api的原因是因为我想利用 围绕本机 http api 的 http 拦截