首页 > 代码库 > 简单总结下关于blob的图片上传

简单总结下关于blob的图片上传

我是从一本书上看到了Azure Blob,然后在网上浪了一会儿,发现了这篇文章,里面他已经把重点的则重地方讲完了,“飞机票:http://www.cnblogs.com/sparkdev/p/6441421.html#commentform”
但是对于我来说,一开始还是有点困惑的。里面的文章已经讲得很详细了,只是在做这个事情之前,你需要引入一个package(我为了找这个package也是煞费苦心,后来才发现前一章节有讲到。。。)
就是
Install-Package WindowsAzure.Storage

安装完成后大概就是这个样子喽

技术分享

好像还有些别的东西。。嗯。。。不管了。


在上面那个地址中已经介绍了添加文件,删除文件啊一些基本操作,噢,对,千万别忘记下一个这个软件,

链接: http://pan.baidu.com/s/1c15dhfi 密码: rcar

原地址只有外网才可以访问的到,所以我放到了百度云里面,原作者应该不介意把。。。介意的话告诉我我去立马删除。。。
这个软件很好用的,而且so easy,点那个像插头一样的图标,然后就尽情的下一步吧~


我把原作者写的几个示例集合到了一个方法中(也许这个方法还有很多需要改进的地方。。)
我贴到这里来给大家用,这样我走的坑,大家就尽量别再掉进去了

  1 public class BlobCommon
  2     {
  3         private CloudBlobContainer container;
  4 
  5         public BlobCommon(string connectionUrl,string containerName)
  6         {
  7             CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionUrl);
  8             CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
  9             container = blobClient.GetContainerReference(containerName);
 10             container.CreateIfNotExists();
 11         }
 12 
 13         public BlobCommon()
 14         {
 15             try
 16             {
 17                 var connectionUrl = ConfigurationManager.ConnectionStrings["BlobConnectionUrl"].ConnectionString;
 18                 var containerName = ConfigurationManager.AppSettings["BlobContainer"].ToString();
 19                 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionUrl);
 20                 CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
 21                 container = blobClient.GetContainerReference(containerName);
 22                 container.CreateIfNotExists();
 23             }
 24             catch (Exception ex)
 25             {
 26             }
 27             
 28         }
 29 
 30         public bool SaveImage(string imageName,string file)
 31         {
 32             try
 33             {
 34                 CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
 35                 using (var fileStream = System.IO.File.OpenRead(file))
 36                 {
 37                     // 这是一个同步执行的方法
 38                     blockBlob.UploadFromStream(fileStream);
 39                 }
 40                 return true;
 41             }
 42             catch (Exception ex)
 43             {
 44                 return false;
 45             }
 46         }
 47 
 48         public bool SaveImage(string imageName, byte[] imageData)
 49         {
 50             try
 51             {
 52                 CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
 53                 blockBlob.UploadFromByteArray(imageData,0, imageData.Length);
 54                 //using (var fileStream = System.IO.File.OpenRead(file))
 55                 //{
 56                 //    // 这是一个同步执行的方法
 57                 //    blockBlob.UploadFromStream(fileStream);
 58                 //}
 59                 return true;
 60             }
 61             catch (Exception ex)
 62             {
 63                 return false;
 64             }
 65         }
 66 
 67         public List<SupervisorReportImageModel> GetBlobImageList()
 68         {
 69             try
 70             {
 71                 var list = new List<SupervisorReportImageModel>();
 72                 foreach (IListBlobItem item in container.ListBlobs(null, false))
 73                 {
 74                     if (item.GetType() == typeof(CloudBlockBlob))
 75                     {
 76                         CloudBlockBlob blob = (CloudBlockBlob)item;
 77                         // todo something
 78                         list.Add(new SupervisorReportImageModel()
 79                         {
 80                             Name = blob.Name.ToString(),
 81                             Url = blob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
 82                         });
 83                     }
 84                     else if (item.GetType() == typeof(CloudAppendBlob))
 85                     {
 86                         CloudAppendBlob appendBlob = (CloudAppendBlob)item;
 87                         // todo something
 88                         list.Add(new SupervisorReportImageModel()
 89                         {
 90                             Name = appendBlob.Name.ToString(),
 91                             Url = appendBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
 92                         });
 93                     }
 94                     else if (item.GetType() == typeof(CloudPageBlob))
 95                     {
 96                         CloudPageBlob pageBlob = (CloudPageBlob)item;
 97                         // todo something
 98                         list.Add(new SupervisorReportImageModel()
 99                         {
100                             Name = pageBlob.Name.ToString(),
101                             Url = pageBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
102                         });
103                     }
104                     else if (item.GetType() == typeof(CloudBlobDirectory))
105                     {
106                         CloudBlobDirectory directory = (CloudBlobDirectory)item;
107                         // todo something
108                         list.Add(new SupervisorReportImageModel()
109                         {
110                             Name = directory.Uri.ToString(),
111                             Url = directory.StorageUri.SecondaryUri.ToString()
112                         });
113                     }
114                 }
115                 return list;
116             }
117             catch (Exception ex)
118             {
119                 return null;
120             }
121         }
122 
123         public bool DownloadImage(string imageName,string saveUrl)
124         {
125             try
126             {
127                 // 创建名称为 mypicture.png 的 Blob 对象的引用。
128                 CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
129                 // 把文件保存到本地。
130                 using (var fileStream = System.IO.File.OpenWrite(saveUrl))
131                 {
132                     blockBlob.DownloadToStream(fileStream);
133                 }
134                 return true;
135             }
136             catch (Exception ex)
137             {
138                 return false;
139             }
140         }
141 
142         public bool SetupBlobRole()
143         {
144             try
145             {
146                 BlobContainerPermissions permissions = container.GetPermissions();
147                 // Container 中的所有 Blob 都能被访问
148                 permissions.PublicAccess = BlobContainerPublicAccessType.Container;
149                 container.SetPermissions(permissions);
150                 return true;
151             }
152             catch (Exception ex)
153             {
154                 return false;
155             }
156         }
157 
158         public bool DeleteImage(string imageName)
159         {
160             try
161             {
162                 CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
163                 blockBlob.DeleteIfExists();
164                 return true;
165             }
166             catch (Exception ex)
167             {
168                 return false;
169             }
170         }
171 
172         public SupervisorReportImageModel GetBlobImageByImageName(string imageName)
173         {
174             try
175             {
176                 List<IListBlobItem> imageData = http://www.mamicode.com/container.ListBlobs(imageName, false).ToList();
177                 foreach (var item in imageData)
178                 {
179                     if (item.GetType() == typeof(CloudBlockBlob))
180                     {
181                         CloudBlockBlob blob = (CloudBlockBlob)item;
182                         // todo something
183                         return new SupervisorReportImageModel()
184                         {
185                             Name = blob.Name.ToString(),
186                             Url = blob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
187                         };
188                     }
189                     else if (item.GetType() == typeof(CloudAppendBlob))
190                     {
191                         CloudAppendBlob appendBlob = (CloudAppendBlob)item;
192                         // todo something
193                         return new SupervisorReportImageModel()
194                         {
195                             Name = appendBlob.Name.ToString(),
196                             Url = appendBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
197                         };
198                     }
199                     else if (item.GetType() == typeof(CloudPageBlob))
200                     {
201                         CloudPageBlob pageBlob = (CloudPageBlob)item;
202                         // todo something
203                         return new SupervisorReportImageModel()
204                         {
205                             Name = pageBlob.Name.ToString(),
206                             Url = pageBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
207                         };
208                     }
209                     else if (item.GetType() == typeof(CloudBlobDirectory))
210                     {
211                         CloudBlobDirectory directory = (CloudBlobDirectory)item;
212                         // todo something
213                         return new SupervisorReportImageModel()
214                         {
215                             Name = directory.Uri.ToString(),
216                             Url = directory.StorageUri.SecondaryUri.ToString()
217                         };
218                     }
219                 }
220                 return null;
221             }
222             catch (Exception ex)
223             {
224                 return null;
225             }
226         }
227     }

----------------------------------------------------我是分割线-------------------------------------------------------
写完之后我不由得有一些困惑,我看到其中有一些方法可以创建文件夹啊什么的,可是暂时还不会用,还需要学习一下子。或者有老司机教教我,给我一个使用文档也可以啦~


我现在有一个最大的难题,就是文件权限的问题。在文档中,我看到了可以获取权限的方法,可是,如果我的图片,提供url出来之后,我怎么才能使用这个权限去下载图片呢。。。

简单总结下关于blob的图片上传