我的网络应用允许用户上传文件.我想使用云计算的azure blob存储。
由于下载将是非常频繁的(比上传更多),我想节省服务器计算时间和带宽,并直接从azure blob服务器服务文件。
我相信这在谷歌云端的Firebase(Firestorage)上是可以实现的。在那里你可以直接从客户端上传和下载。(我知道认证和授权也是由firebase管理的,所以它让事情变得更简单)
Azure上是否存在类似的机制服务?
例如当用户点击一个 azure 存储下载链接时,一个触发器将检查 JWT 以获得授权,数据将直接从 azure 存储发送至客户端。
类似的选项与Azure Blob存储也是可用的。你可以使用 Storage SDK
来访问容器和列表下载blob。
有了javascript后端,你可以使用SAS Token或Azure存储JavaScript客户端库也支持创建。BlobService
除了SAS令牌之外,还可以使用基于存储账户密钥的认证。然而,出于安全考虑,使用由后端 Web 服务器使用存储访问策略生成的限时 SAS 令牌。
例子 此处
编辑:我没有完全回答上面的问题。
我还没有完全回答上面的问题,但是如果你想访问blob存储或从blob存储中下载任何文件,你可以使用任何JavaScript应用程序生成的SAS令牌的正常http获取请求。
有了Angualr.NET,你就可以使用正常的http获取请求,并使用任何JavaScript应用程序生成的SAS令牌。
uploadToBLob(files) {
let formData: FormData = new FormData();
formData.append("asset", files[0], files[0].name);
this.http.post(this.baseUrl + 'insertfile', formData)
.subscribe(result => console.log(result));
}
downloadFile(fileName: string) {
return this.http.get(this.baseUrl + 'DownloadBlob/' + fileName, { responseType: "blob" })
.subscribe((result: any) => {
if (result) {
var blob = new Blob([result]);
let saveAs = require('file-saver');
let file = fileName;
saveAs(blob, file);
this.fileDownloadInitiated = false;
}
}, err => this.errorMessage = err
);
}
然而,最好的做法(考虑到安全性)是有一个后端APIAzure函数来处理文件上传。