我是从一本书上看到了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. Vue H5 History 部署IIS上404问题

    背景简介 vue使用vue-router时,默认的地址并不美观,以#进行分割,例如:http://www.xxx.com/#/main. 为了访问地址能像正常的url一样,例如:http://www. ...

  2. Web测试到底是在测什么(资料合集)

    开始今晚的主题之前 先来看一张图, 这是老徐16年10月份,线上Web主题分享时整理的大纲 图片略模糊 看得清就好 Web测试, 进行抽离拆分,基本上就如上一些内容. 不管是测什么系统,什么功能,基本 ...

  3. [笔记]我的Linux入门之路 - 03.Java环境搭建

    其实ubuntu是自带一个叫openJDK的东西的,是谷歌看Oracle不爽而搞的.不过呢...总感觉不太习惯,况且我既然都来Linux了,总是想折腾一把的. 首先先检查下有没有安装java.终端输入 ...

  4. wamp的搭建-个人笔记

    #wamp的配置 ##选项 1. 用apache 就下ts的 2. 是nginx或者iis 就用nts的 3. php win下面的 选择zip 或者msi的 ##apache的配置 1.配置apac ...

  5. Net分布式系统之六:微服务之API网关

    本人建立了个人技术.工作经验的分享微信号,计划后续公众号同步更新分享,比在此更多具体.欢迎有兴趣的同学一起加入相互学习.基于上篇微服务架构分享,今天分享其中一个重要的基础组件“API网关”. 一.引言 ...

  6. php如何应对秒杀抢购高并发思路

    我们常用QPS(Query Per Second,每秒处理请求数)来衡量一个web应用的吞吐率,解决每秒数万次的高并发场景,这个指标非常关键. 举个栗子:假设一个业务请求平均为100ms,同时系统内有 ...

  7. ES6核心内容精讲--快速实践ES6(一)

    前言 本文大量参考了阮一峰老师的开源教程ECMAScript6入门,适合新手入门或者对ES6常用知识点进行全面回顾,目标是以较少的篇幅涵盖ES6及部分ES7在实践中的绝大多数使用场景.更全面.更深入的 ...

  8. 前端技术API手册(2) -- CSS API 的实现

    微信小程序 jQuery每日经典 第二阶段已经发布,截至目前收录的技术有jQuery和CSS.其他技术正在不断的填充完善中. CSS技术手册实现的方法: 资料来源 所有的CSS资料均参考自网址:htt ...

  9. SpringMVC实现账号只能在一处登陆

    一.问题引导 在Web开发中,实现一个账号只能在一处登陆有两种形式:1.当某个账号在某处登陆后,如果再在其他处登陆,将前一个账号挤掉:2.当某个账号登陆后,此账号在其他设备登陆提示已经登陆,无法登陆. ...

  10. Spark学习资料共享

    链接相关 课件代码:http://pan.baidu.com/s/1nvbkRSt 教学视频:http://pan.baidu.com/s/1c12XsIG 这是最近买的付费教程,对资料感兴趣的可以在 ...