图像上传到Azure

时间:2015-09-24 08:51:49

标签: c# image azure webclient

我在Azure中创建了一个Web应用程序。这是一个使用microsoft asp .net创建的简单Web应用程序。我下载了我的azure配置文件,并使用visual studio发布到azure web应用程序。 Web应用程序中有一个图像文件夹。当我发布所有上传的图像像魅力。然后我使用了一个使用Web客户端对象的WPF smartclient应用程序,并将其凭据设置为网络凭据以及我的azure帐户的用户ID和密码。但是当该行到达webclient.upload类方法时,我得到了401未经授权的异常。在我看来,当我尝试上传我的证书时,并没有被认为是正确的。如果是IIS,我知道该怎么做。但在AZURE我不知道如何给匿名用户和访问上传图像。这里要考虑的任何意见或要点?

2 个答案:

答案 0 :(得分:0)

如果您的图片不是应用程序的静态部分,而是可以从您的应用程序创建(示例用户上传他的图片),我建议使用Azure存储而不是文件系统(您不会丢失用户上传的图像)你下次部署)。

可以从code轻松管理Azure存储,也可以使用CloudBerry Explorer等GUI管理工具。

答案 1 :(得分:0)

  1. 添加名称空间
  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();
        }