使用 Azure Blob Stoage 实现一个静态文件服务器
什么是Azure Blob Stoage#
Azure Blob Stoage 是微软Azure的对象存储服务。国内的云一般叫OSS,是一种用来存储非结构化数据的服务,比如音频,视频,图片,文本等等。用户可以通过http在全球任意地方访问这些资源。这些资源可以公开访问,也可以私有访问。看到这些描述立马就想到这这个服务可以用来做静态文件服务。
如果你有免费账户那么可以使用5G的免费额度,用来存一些图片跟JavaScript等小文件也足够了。
Azure Blob Stoage的存储结构。
创建存储账户#
创建账户跟其他服务类似,取个实例的名称,选区域,还是那个套路哪个区域离你近就选哪个。
高级设置,把“需要安全传输”禁用,为了测试方便咱不走https。
回到资源主界面开始新建容器,取个名字“static”,公共访问级别选择“Blob仅匿名访问blob”。
点击新建的容器,可以查看容器里的资源文件,可以上传删除文件。
每个上传上去的文件,都会对应一个url,通过这个url可以直接进行访问。
在浏览器里访问一下这张图片,可以在浏览器里显示出来。
分析一下这个url:https://azblob123.blob.core.windows.net/static/1.jpg
https://azblob123.blob.core.windows.net代表帐户实例地址
static代表容器
1.jpg代表文件
自定义域名#
到这我们的文件可以上传,可以访问,已经做为静态文件服务器使用了。但是这个域名不太友好,让我们来给它换个自己的域名访问。
选择左边菜单“自定义域”。界面上提示有两种方式可以设置自定义域名,我们使用CNAME来实现以下。
这里使用dnspod来管理域名。
添加一条记录:
主机记录:files
记录类型:cname
记录值:azblob123.blob.core.windows.net
这有配置之后,访问我自己的域名files.xbaby.xyz其实指向的是azblob123.blob.core.windows.net
我们使用新域名访问下 http://files.xbaby.xyz/static/1.jpg 浏览器里出现了对应的图片,表示我们的自定义域名起作用了。
使用SDK上传文件#
显然每次上传文件都要登录到Azure的管理平台太麻烦了,我们可以使用Azure Blob提供的.net sdk来制作一个小工具来方便上传文件。
新建一个winform项目#
新建一个winform项目,一个框放一个按钮用来选择文件,选择后进行上传。
从nuget上安装AzureBlobStorage的sdk
Install-Package Azure.Storage.Blobs -Version 12.4.4
private void btnSelectfiles_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var path = openFileDialog1.FileName;
var fileName = path.Split("\\").Last();
string connectionString = "xxxxxxxxxxxx";
var container = new BlobContainerClient(connectionString, "static");
using (var file = File.OpenRead(path))
{
container.UploadBlob(fileName, file);
MessageBox.Show($"{fileName}上传成功!");
}
}
}
总结#
使用Azure Blob Storage可以方便的上传跟管理各种图片、文本、音视频等文件。上传的每个文件都有一个唯一的url对应,可以方便的通过http在全球访问内进行访问。使用这些特性我们可以轻松的把它当做静态文件服务器来用。我们还可以通过定义域名跟自己的域名结合起来使用,获得更加友好的使用体验。Azure Blob Storage还提供了各种语言的sdk方便使用代码来管理数据。
作者:Agile.Zhou
出处:https://www.cnblogs.com/kklldog/p/13383634.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器