WPF 实现阿里云OSS私人云盘上传
最近公司同事跟合作商有工作对接,由于公司网络对百度云盘有下载限制,于是乎想到使用阿里云的OSS做为文件中转,公司也有开通了OSS,于是通过WPF开发了一个桌面小工具,方便双方高速的互传文件,相当于私人共享云盘。
实现代码
通过查询阿里云官方文档,OSS上传会生成回调,实现进度条的显示,主要实现代码如下:
开启多线程进行上传
await Task.Run(() => {
try
{
PINS.Util.AliyunOSS aliyunOSS = new PINS.Util.AliyunOSS();
using (var fs=File.Open(resourcepath,FileMode.Open))
{
var putObjectRequest = new PutObjectRequest(aliyunBucket, filepath, fs);
putObjectRequest.StreamTransferProgress += streamProgressCallback;
aliyunOSS.OssClientIntance().PutObject(putObjectRequest);
}
}
catch (Exception ex)
{
MessageBox.Show($"上传出错了:{ex.Message}");
}
});
回调方法
private void streamProgressCallback(object sender, StreamTransferProgressArgs args)
{
long value = args.TransferredBytes*100 / args.TotalBytes;
this.Dispatcher.Invoke(()=>{
pbprogress.Value = value;
this.txtProgress.Text = $"{value}%";
if (value == 100)
{
MessageBox.Show("上传成功!");
}
});
}
最终实现效果