我是从一本书上看到了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,点那个像插头一样的图标,然后就尽情的下一步吧~

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

 public class BlobCommon
{
private CloudBlobContainer container; public BlobCommon(string connectionUrl,string containerName)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionUrl);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists();
} public BlobCommon()
{
try
{
var connectionUrl = ConfigurationManager.ConnectionStrings["BlobConnectionUrl"].ConnectionString;
var containerName = ConfigurationManager.AppSettings["BlobContainer"].ToString();
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionUrl);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists();
}
catch (Exception ex)
{
} } public bool SaveImage(string imageName,string file)
{
try
{
CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
using (var fileStream = System.IO.File.OpenRead(file))
{
// 这是一个同步执行的方法
blockBlob.UploadFromStream(fileStream);
}
return true;
}
catch (Exception ex)
{
return false;
}
} public bool SaveImage(string imageName, byte[] imageData)
{
try
{
CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
blockBlob.UploadFromByteArray(imageData,, imageData.Length);
//using (var fileStream = System.IO.File.OpenRead(file))
//{
// // 这是一个同步执行的方法
// blockBlob.UploadFromStream(fileStream);
//}
return true;
}
catch (Exception ex)
{
return false;
}
} public List<SupervisorReportImageModel> GetBlobImageList()
{
try
{
var list = new List<SupervisorReportImageModel>();
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
if (item.GetType() == typeof(CloudBlockBlob))
{
CloudBlockBlob blob = (CloudBlockBlob)item;
// todo something
list.Add(new SupervisorReportImageModel()
{
Name = blob.Name.ToString(),
Url = blob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
});
}
else if (item.GetType() == typeof(CloudAppendBlob))
{
CloudAppendBlob appendBlob = (CloudAppendBlob)item;
// todo something
list.Add(new SupervisorReportImageModel()
{
Name = appendBlob.Name.ToString(),
Url = appendBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
});
}
else if (item.GetType() == typeof(CloudPageBlob))
{
CloudPageBlob pageBlob = (CloudPageBlob)item;
// todo something
list.Add(new SupervisorReportImageModel()
{
Name = pageBlob.Name.ToString(),
Url = pageBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
});
}
else if (item.GetType() == typeof(CloudBlobDirectory))
{
CloudBlobDirectory directory = (CloudBlobDirectory)item;
// todo something
list.Add(new SupervisorReportImageModel()
{
Name = directory.Uri.ToString(),
Url = directory.StorageUri.SecondaryUri.ToString()
});
}
}
return list;
}
catch (Exception ex)
{
return null;
}
} public bool DownloadImage(string imageName,string saveUrl)
{
try
{
// 创建名称为 mypicture.png 的 Blob 对象的引用。
CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
// 把文件保存到本地。
using (var fileStream = System.IO.File.OpenWrite(saveUrl))
{
blockBlob.DownloadToStream(fileStream);
}
return true;
}
catch (Exception ex)
{
return false;
}
} public bool SetupBlobRole()
{
try
{
BlobContainerPermissions permissions = container.GetPermissions();
// Container 中的所有 Blob 都能被访问
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
return true;
}
catch (Exception ex)
{
return false;
}
} public bool DeleteImage(string imageName)
{
try
{
CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
blockBlob.DeleteIfExists();
return true;
}
catch (Exception ex)
{
return false;
}
} public SupervisorReportImageModel GetBlobImageByImageName(string imageName)
{
try
{
List<IListBlobItem> imageData = container.ListBlobs(imageName, false).ToList();
foreach (var item in imageData)
{
if (item.GetType() == typeof(CloudBlockBlob))
{
CloudBlockBlob blob = (CloudBlockBlob)item;
// todo something
return new SupervisorReportImageModel()
{
Name = blob.Name.ToString(),
Url = blob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
};
}
else if (item.GetType() == typeof(CloudAppendBlob))
{
CloudAppendBlob appendBlob = (CloudAppendBlob)item;
// todo something
return new SupervisorReportImageModel()
{
Name = appendBlob.Name.ToString(),
Url = appendBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
};
}
else if (item.GetType() == typeof(CloudPageBlob))
{
CloudPageBlob pageBlob = (CloudPageBlob)item;
// todo something
return new SupervisorReportImageModel()
{
Name = pageBlob.Name.ToString(),
Url = pageBlob.SnapshotQualifiedStorageUri.SecondaryUri.ToString()
};
}
else if (item.GetType() == typeof(CloudBlobDirectory))
{
CloudBlobDirectory directory = (CloudBlobDirectory)item;
// todo something
return new SupervisorReportImageModel()
{
Name = directory.Uri.ToString(),
Url = directory.StorageUri.SecondaryUri.ToString()
};
}
}
return null;
}
catch (Exception ex)
{
return null;
}
}
}

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

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

简单总结下关于blob的图片上传的更多相关文章

  1. springMVC框架下——通用接口之图片上传接口

    我所想要的图片上传接口是指服务器端在完成图片上传后,返回一个可访问的图片地址. spring mvc框架下图片上传非常简单,如下 @RequestMapping(value="/upload ...

  2. vue下实现input实现图片上传,压缩,拼接以及旋转

    背景 作为一名前端工作人员,相信大家在开发系统的时候,经常有遇到需要这么一种需求,就是需要为用户保存上传的图片,很多小白遇到这个问题的时候,都会虎躯一震,以为会是一个棘手的问题,当你读完这篇文章的时候 ...

  3. yii2.0用gii自动补全代码做的简单增删改查,以及图片上传和展示

    首先已经用gii根据model层生成了控制器,模型,视图层. 表结构为如图所示:表名为zhoukao1,

  4. H5拍照、选择图片上传组件核心

    背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...

  5. 关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)

    一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...

  6. 【转】关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)

    一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...

  7. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  8. .net mvc + layui做图片上传(二)—— 使用流上传和下载图片

    摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件.这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的 ...

  9. CKEditor5 + vue2.0 自定义图片上传、highlight、字体等用法

    因业务需求,要在 vue2.0 的项目里使用富文本编辑器,经过调研多个编辑器,CKEditor5 支持 vue,遂采用.因 CKEditor5 文档比较少,此处记录下引用和一些基本用法. CKEdit ...

随机推荐

  1. Spring Cloud 学习笔记(二)——Netflix

    4 Spring Cloud Netflix Spring Cloud 通过自动配置和绑定到Spring环境和其他Spring编程模型惯例,为Spring Boot应用程序提供Netflix OSS集 ...

  2. springboot(二):web综合开发

    上篇文章介绍了spring boot初级教程:spring boot(一):入门篇,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spring boot的其它 ...

  3. 关于ie的h5 刷新和ctrl+5刷新 以及图标刷新的问题

    最近在做一个表单验证,当表单失去焦点的时候触发错误提示. 可是..... 火狐 欧朋 刷新都没有问题,而在ie edge 用f5刷新的时候 都能记住之前的焦点 造成提示混乱. 问题算是解决: < ...

  4. GirdView分页

    给gridview增加以下时间,即可 设置pageindex 重新绑定数据 protected void GvMenu_PageIndexChanging(object sender, GridVie ...

  5. servlet context 和 servlet config

    servletConfig Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象,该对象中包含了servlet的<init-para ...

  6. vue-动手做个选择城市

    查看完整的代码请到   我的github地址  https://github.com/qianyinghuanmie/vue2.0-demos 一.结果展示 二.前期准备: 1.引入汉字转拼音的插件, ...

  7. kafka 0.10.2 部署失败后,重新部署

    删除kafka各个节点log目录 删除zookeeper上kafka相关的目录 [root@m1 ~]# zkCli.sh Connecting to localhost: -- ::, [myid: ...

  8. java中文件操作《一》

    在日常的开发中我们经常会碰到对文件的操作,在java中对文件的操作都在java.io包下,这个包下的类有File.inputStream.outputStream.FileInputStream.Fi ...

  9. 《算法4》2.1 - 插入排序算法(Insertion Sort), Python实现

    排序算法列表电梯: 选择排序算法:详见 Selection Sort 插入排序算法(Insertion Sort):非常适用于小数组和部分排序好的数组,是应用比较多的算法.详见本文 插入排序算法的语言 ...

  10. 《NLTK基础教程》译者序

    购买<NLTK基础教程> 说来也凑巧,在我签下这本书的翻译合同时,这个世界好像还不知道AlphaGo的存在.而在我完成这本书的翻译之时,Master已经对人类顶级高手连胜60局了.至少从媒 ...