概述:该程序是一款界面比较简单的c#窗体程序。主要的功能就是通过窗体程序远程连接了阿里云OSS对象存储,利用阿里云接口实现了对OSS的基本操作:本地路径文件上传到阿里云存储以及云存储上的文件下载到本地路径。相信这是很多涉及到阿里云服务器或者阿里云存储都会用到的最主要的功能,因为时间有限所以窗体程序页面比较简洁,欢迎各位大佬在这个想法的基础下将界面和功能设计的更加美观、丰富。
一:对象存储OSS配置
1.登录阿里云账号,购买阿里云对象存储OSS(具体规格由本身需要购买,网址如下:对象存储 OSS_云存储服务_企业数据管理_存储-阿里云 (aliyun.com))
2.首页点击控制台,在列表中选择对象存储OSS。进入OSS管理控制台,创建你的第一个Bucked(Bucket名称必须全局唯一,一旦创建不可更改)
保存好BucketName(存储桶名称)和Endpoint(存储桶所在的区域对应的访问域名)后面作为接口连接
3.控制台进入RAM访问控制,点击用户-创建新用户(注意创建完成之后保存好AccessKeyId和AccessKeySecret创建完成之后只会展示一次!!!)
二:项目环境配置
需要安装Aliyun.OSS.SDK、aliyun-net-sdk-core、aliyun-net-sdk-ecs NuGet程序包。
安装步骤VS上方菜单栏选择 :工具-NuGet包管理器-管理解决方案的NuGet程序包。搜索安装即可
三:代码实现
引用程序包
using System;
using System.IO;
using System.Windows.Forms;
using Aliyun.OSS;
using Aliyun.OSS.Common;
更换你的对应名称
private OssClient client;
private const string AccessKeyId = "your AccessKeyId";
private const string AccessKeySecret = "your AccessKeySecret";
private const string Endpoint = "your Endpoint"; //存储桶所在的区域对应的访问域名
private const string BucketName = "your BucketName"; //存储桶名称
创建一个与阿里云对象存储服务(OSS)进行通信的客户端实例
private void InitializeOssClient()
{
client = new OssClient(Endpoint, AccessKeyId, AccessKeySecret);
}
private void Form7_Load(object sender, EventArgs e)
{
InitializeOssClient();
RefreshFileList();
}
private void RefreshFileList()
{
listBoxFiles.Items.Clear();
try
{
var listResult = client.ListObjects(BucketName);
foreach (var obj in listResult.ObjectSummaries)
{
listBoxFiles.Items.Add(obj.Key);
}
}
catch (Exception ex)
{
MessageBox.Show("获取文件列表失败:" + ex.Message);
}
}
private void DownloadFile(string objectKey, string savePath)
{
try
{
var getObjectRequest = new GetObjectRequest(BucketName, objectKey);
var ossObject = client.GetObject(getObjectRequest);
// 将对象内容保存到本地文件
using (var stream = ossObject.Content)
{
using (var fileStream = File.Create(savePath))
{
stream.CopyTo(fileStream);
}
}
MessageBox.Show("文件下载成功!");
}
catch (Exception ex)
{
MessageBox.Show("文件下载失败:" + ex.Message);
}
}
private void UploadFile(string objectKey, string filePath)
{
try
{
client.PutObject(BucketName, objectKey, filePath);
MessageBox.Show("文件上传成功!");
}
catch (Exception ex)
{
MessageBox.Show("文件上传失败:" + ex.Message);
}
}
按钮事件
private void browseButton_Click(object sender, EventArgs e)
{
RefreshFileList();
}
private void downloadButton_Click(object sender, EventArgs e)
{
string selectedFile = listBoxFiles.SelectedItem.ToString();
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = selectedFile;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
DownloadFile(selectedFile, saveFileDialog.FileName);
}
}
private void uploadButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string selectedFile = openFileDialog.FileName;
string objectKey = Path.GetFileName(selectedFile);
UploadFile(objectKey, selectedFile);
}
}
private void DeleteButton_Click(object sender, EventArgs e)
{
try
{
string selectedFile = listBoxFiles.SelectedItem.ToString();
// 调用DeleteObject方法删除文件
client.DeleteObject(BucketName, selectedFile);
MessageBox.Show("文件删除成功!");
}
catch (OssException ex)
{
MessageBox.Show("文件删除失败:" + ex.Message);
}
}
运行结果如下:
这个程序的比较熬时间的地方还是在阿里云OSS的配置方面,如果第一次接触是需要很长时间去了解阿里云相关产品的使用规则的,希望这篇文章能够给各位大佬带来一点思路。