我是从一本书上看到了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. 【教程】发布NAServer到ArcGIS Server 10.4上[超详细]

    前阵子对ArcGIS API For JavaScript的网络分析有兴趣,但是不知道其数据是如何获取的. 查阅API知道,AJS的网络分析只有三个功能:最短路径(RouteTask).最近设施点(C ...

  2. Spring Boot 整合 MyBatis

    前言 现在业界比较流行的数据操作层框架 MyBatis,下面就讲解下 Springboot 如何整合 MyBatis,这里使用的是xml配置SQL而不是用注解.主要是 SQL 和业务代码应该隔离,方便 ...

  3. 关于使用命令添加jar进自己的pom文件中-maven项目添加jar包

    现在几乎开发项目都是使用的maven项目,但是有的时候可以使用比较偏门或者新的jar可能在网上搜不到在pom文件里的配置应该如何写,因此写下这篇博客. 比如我现在想加入的AAA.jar这个包 打开cm ...

  4. Spring Session实现分布式session的简单示例

    前面有用 tomcat-redis-session-manager来实现分布式session管理,但是它有一定的局限性,主要是跟tomcat绑定太紧了,这里改成用Spring Session来管理分布 ...

  5. poj 1088 动态规划

    #include <iostream> #include <string.h> using namespace std; ][];//存储当前位置能得到的最优解 ][];//存 ...

  6. 关于股票最佳买卖时机的lintcode代码

    class Solution {public:    /**     * @param prices: Given an integer array     * @return: Maximum pr ...

  7. python 用户交互

    #coding=utf8 name = input("name:") age = int(input("age:")) job = input("jo ...

  8. AFNetworking源码阅读

    get方法: - (NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters progress:(void ...

  9. window 远程在Linux(centOS7.0)上安装JDK以及配置环境变量

    本人是在windows 7 上安装了虚拟机,虚拟机安装的是linux(centOS7.0)系统现在在Windows 上安装SecureCRT 远程虚拟机的linux系统,安装JDK以及配置环境变量. ...

  10. python requests 模拟登陆网站,抓取数据

    抓取页面数据的时候,有时候我们需要登陆才可以获取页面资源,那么我们需要登陆以后才可以跳转到对应的资源页面,那么我们需要通过模拟登陆,登陆成功以后再次去抓取对应的数据. 首先我们需要通过手动方式来登陆一 ...