angular - 如何使用 httpClient 在 Angular 中调用 curl 命令
问题描述
我有一个 curl 命令,可以将 .zip 文件上传到 nexus 存储库。我想在 Angular 中调用这个命令。我想知道它必须如何完成。你能帮帮我吗?命令:curl -v -u 用户名:密码 --upload-file test.zip http://use08nexus01p:8081/nexus/content/repositories //
解决方案
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);
}
}
推荐阅读
- eslint - 我可以按照我喜欢的方式设置 ESLint 的缩进验证吗?
- azure - 监视 Azure Blob 容器文件
- php - 从数据库中存储值以供以后在 php 中使用
- autodesk-forge - BIM 360 无法翻译下载的文件
- sql - 返回字符串中任意位置包含数值的行 - SQL - GBQ
- android - 如何将 FAB 位置从插入更改为与 BottomAppBar 重叠?
- css - thymeleaf + bootstrap + css - 为什么我的最后一张图片没有对齐到最后?
- python - elasticsearch7 python search() api使用HTTP POST方法而不是HTTP GET
- php - 在一个 api 驱动的网站中如何处理传统功能?
- javascript - Kendo html有界表单重置