Cleary我不想透露Azure存储帐户密钥
如何在没有浏览器的Azure存储帐户密钥的情况下将本地文件加载到BLOB存储? 或者甚至可以完成?
我从一个胖的.NET客户端获得可以用SAS做到这一点。
我们目前不支持基于AD的身份验证或ACL,但确实如此 将它放在我们的功能请求列表中。目前,Azure存储 帐户密钥用于为文件共享提供身份验证。
这需要一条路 FileUpload Class
data have;
input ID AdmitNum HaveAge;
datalines;
1 1 51
1 2 48
1 3 51
1 4 49
2 1 53
2 2 43
2 3 43
2 4 43
2 5 54
;
run;
data want;
set have;
by ID;
if _n_ = 1 NeedAge = HaveAge;
if HaveAge > NeedAge then NeedAge = HaveAge;
retain NeedAge;
run;
我不知道如何使用SAS作为上传终点 我无论如何都不会以ASP.NET的方式将文件上传到blob。
答案 0 :(得分:1)
Azure Blob存储和Azure文件存储之间的一些差异如下:
有关详细信息,建议您阅读以下教程:
SAS :这是一种理想的方法,可以将存储帐户中资源的有限访问权限授予其他客户,而无需公开您的帐户密钥。有关详细信息,请参阅Using Shared Access Signatures (SAS)。
根据您的要求,我假设您可以使用Blob存储来存储您的文件。请按照以下步骤实现您的目的:
在容器上生成SAS网址
简单来说,您可以使用Microsoft Azure Storage Explorer创建SAS。有关详细信息,请参阅此turtorial。
注意:您需要在blob容器上创建一个具有写入权限的SAS,用于存储上传的文件。
<强> UploadFile.aspx.cs 强>
protected void UploadButton_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string containerSasUrl = "https://brucechen.blob.core.windows.net/blob-container-01?st=2016-09-21T01%3A59%3A00Z&se=2016-10-01T01%3A59%3A00Z&sp=rw&sv=2015-04-05&sr=c&sig=xGbgBMypxKP%2FBXAHFuzv%2FabqZqjM3W89JYjgf5uvdHo%3D";
try
{
string uploadedFileUrl = string.Empty;
var file = FileUpload1.PostedFile;
string blobName = FileUpload1.FileName;
//Retrieve a reference to a container.
CloudBlobContainer container = new CloudBlobContainer(new Uri(containerSasUrl));
//Retrieve reference to a blob named "blobName".
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
blockBlob.UploadFromStreamAsync(file.InputStream);
//Retrieve the uploaded file(blob) url
uploadedFileUrl = blockBlob.Uri.ToString();
}
catch (Exception ex)
{
//TODO:log
}
}
}
此外,您可以管理blob(文件)资源并向其他人提供公共或指定所需的访问级别。为了更好地理解它,您可以参考此tutorial。