首页 > 解决方案 > 如何使用 httpClient 在 Angular 中调用 curl 命令

问题描述

我有一个 curl 命令,可以将 .zip 文件上传到 nexus 存储库。我想在 Angular 中调用这个命令。我想知道它必须如何完成。你能帮帮我吗?命令:curl -v -u 用户名:密码 --upload-file test.zip http://use08nexus01p:8081/nexus/content/repositories //

标签: angularrestcurl

解决方案


curl 的 --upload-file 参数使用 PUT 请求将数据传输到您的服务器。-u 参数使用基本身份验证。有很多方法可以使用 Angular 发送类似的请求。您可能会拥有一项为您工作的服务。以下是实现此目的的一种可能方法。请注意,下面的服务函数返回一个需要在组件中订阅的 observable。也许类似于以下内容:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpClient, HttpEvent, HttpParams, HttpRequest, HttpHeaders } from '@angular/common/http';

@Injectable({ providedIn: 'root' })
export class AuthService {

    constructor(private http: HttpClient) {}

    public uploadFile(file: File, username: string, password: string): Observable<HttpEvent<any>> {
      // Note - this returns an EVENT, so we can track progress
      var headers = new HttpHeaders();
      headers.append("Authorization", "Basic " + btoa(`${username}:${password}`));
      let formData = new FormData();
      formData.append('upload', file);
      const params = new HttpParams;
      const options = { headers: headers, params: params, reportProgress: true };
      const req = new HttpRequest('PUT', 'http://use08nexus01p:8081/nexus/content/repositories/', formData, options);
      return this.http.request(req);
    }
}

推荐阅读