【问题标题】:Image upload to Azure图像上传到 Azure
【发布时间】:2015-09-24 08:51:48
【问题描述】:
我在 Azure 中创建了一个 Web 应用程序。这是一个使用 microsoft asp .net 创建的简单 Web 应用程序。我下载了我的 azure 配置文件并使用 Visual Studio 发布到 azure Web 应用程序。 Web 应用程序中有一个图像文件夹。当我发布所有上传的图像时,就像魅力一样。然后,我使用 WPF 智能客户端应用程序使用 Web 客户端对象,并将其凭据设置为网络凭据以及我的 azure 帐户的用户 ID 和密码。但是当线路到达 webclient.upload 类型的方法时,我得到了 401 未经授权的异常。在我看来,当我尝试上传我的凭据时,我认为它不正确。如果是 IIS,我知道该怎么做。但在 AZURE 中,我不确定如何为匿名用户提供上传图像的权限。这里有什么需要考虑的cmets或积分吗?
【问题讨论】:
标签:
c#
image
azure
webclient
【解决方案1】:
如果您的图像不是应用程序的静态部分,而是可以从您的应用程序创建(例如用户上传他的图片),我建议使用 Azure 存储而不是文件系统(您不会丢失用户上传的图像之后下次部署)。
可以通过code 以及使用CloudBerry Explorer 等GUI 管理工具轻松管理Azure 存储。
【解决方案2】:
- 添加名称空间
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
2.添加类
public class blobservice
{
public CloudBlobContainer GetCloudBlobContainer()
{
string connString = "DefaultEndpointsProtocol=https;AccountName="";AccountKey=E"";";
string destContainer = "mysample";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(destContainer);
if (blobContainer.CreateIfNotExists())
{
blobContainer.SetPermissions(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
}
return blobContainer;
}
}
3..aspx.cs
blobservice _blobServices = new blobservice();
protected void Page_Load(object sender, EventArgs e)
{
blobservice _blobServices = new blobservice();
Upload();
}
public void Upload()
{
CloudBlobContainer blobContainer = _blobServices.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference("Sampleblob.jpg");
WebClient wc = new WebClient();
byte[] bytes = wc.DownloadData(Server.MapPath("~/Images/active.png"));
using (Stream ms = new MemoryStream(bytes))
{
blob.UploadFromStream(ms);
}
}
protected void btnDelete_Click(object sender, EventArgs e)
{
string Name = "https://bikeimages.blob.core.windows.net/mysample/Sampleblob.jpg";
Uri uri = new Uri(Name);
string filename = System.IO.Path.GetFileName(uri.LocalPath);
blobservice _blobServices = new blobservice();
CloudBlobContainer blobContainer = _blobServices.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(filename);
blob.Delete();
}