【发布时间】:2020-11-18 00:53:28
【问题描述】:
我的存储 Blob 容器 (v2) 中有一个 csv 文件(Blob 类型:块 blob)。
我想知道如何才能将文件提取到我的 Angular 应用程序中?
目前我尝试下载 csv,将其移动到 assets 文件夹并使用 HttpClient get() 方法从那里获取并成功读取数据:
this.http.get('assets/my-organization.csv', {responseType: 'text'})
.subscribe(data => {
let csvToRowArray = data.split("\n");
for (let index = 1; index <csvToRowArray.length - 1; index++) {
let row = csvToRowArray[index].split(";");
this.orgArray.push(new Organizatio(row[0],row[1], row[2], row[3]));
}
console.log(this.orgArray);
})
现在我希望能够从 Azure 本身动态地感染数据,而无需在每次生成新数据时总是手动下载它。我尝试简单地将其重命名为:
this.http.get('https://<my_azure_storage_url>/my-organization.csv', {responseType: 'text'})
这自然是行不通的。所以我想知道我怎样才能得到这些数据?
【问题讨论】:
-
您收到的错误信息是什么? Blob 是否可公开访问?
-
@GauravMantri-AIS 从源“localhost:4200”访问“https://
/my-organization.csv”的 XMLHttpRequest 已被 CORS 策略阻止:没有“访问控制” -Allow-Origin' 标头存在于请求的资源上。 -
您需要为 blob 服务启用 CORS 规则,以便您可以从您的 Web 应用程序向您的存储帐户进行 AJAX 调用。
-
更多关于 CORS 规则的信息:docs.microsoft.com/en-us/rest/api/storageservices/…。您可以在 Azure 门户中设置 CORS 规则。
-
@OreoFanatics 如果是这样,我建议您将容器上的访问级别设置为私有使用 sas 令牌以访问 blob:docs.microsoft.com/en-us/azure/storage/common/…。这样做之后,没有 sas 令牌的人无法访问 blob。
标签: angular rest blob httpclient azure-blob-storage