SharpOSS兼容阿里云和亚马逊云
前言:项目中下载文件总是通过远控下载的话,如果远控服务器配置不高的话会比较占服务器的带宽,这边的话就编写一个SharpOSS将占宽问题转接到目标服务器上面来进行处理规避自身服务器占宽问题。
参考文章:https://github.com/uknowsec/SharpOSS
代码实现
using Aliyun.OSS; using Aliyun.OSS.Common; using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.IO; namespace SharpOSS { class Program { static void Main(string[] args) { if (args.Length != 6) { Console.WriteLine("Usage: \n\n" + "SharpOSS.exe OssType bucketName your_access_id your_access_key endpoint UploadFilePath\n\n" + "Example:\n\n" + "SharpOSS.exe aliyun your_buacket your_access_id your_access_key oss-cn-hangzhou.aliyuncs.com d:\\backup.zip\n" + "SharpOSS.exe amazon your_buacket your_access_id your_access_key us-east-1 d:\\backup.zip\n"); return; } string OssType = args[0]; string bucketName = args[1]; string accessKeyId = args[2]; string accessKeySecret = args[3]; string endpoint = args[4]; string fileToUpload = args[5]; if (OssType.ToLower() == "aliyun") { OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { string key = Path.GetFileName(fileToUpload); try { client.PutObject(bucketName, key, fileToUpload); Console.WriteLine("\n [+] Upload File {0} to {1}.{2} succeeded", key, bucketName, endpoint); } catch (Exception ex) { Console.WriteLine("\n [-] Failed with error info: {0}", ex.Message); } } catch (OssException ex) { Console.WriteLine("\n [-] Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}", ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId); } catch (Exception ex) { Console.WriteLine("\n [-] Failed with error info: {0}", ex.Message); } }else if (OssType.ToLower() == "amazon") { try { var s3Client = new AmazonS3Client(accessKeyId, accessKeySecret, RegionEndpoint.GetBySystemName(endpoint)); var putRequest = new Amazon.S3.Model.PutObjectRequest { BucketName = bucketName, Key = Path.GetFileName(fileToUpload), FilePath = fileToUpload, ContentType = "application/octet-stream" }; PutObjectResponse response = s3Client.PutObject(putRequest); Console.WriteLine("\n [+] Upload File {0} to {1} succeeded", Path.GetFileName(fileToUpload), bucketName); } catch (AmazonS3Exception ex) { Console.WriteLine("\n [-] Failed with error code: {0}; Error info: {1}. \nRequestID:{2}", ex.ErrorCode, ex.Message, ex.RequestId); } catch (Exception ex) { Console.WriteLine("\n [-] Failed with error info: {0}", ex.Message); } } else { Console.WriteLine($"Current Not Support OSS Type: {args[0]}"); } } } }
阿里云测试
SharpOSS.exe aliyun your_buacket your_access_id your_access_key oss-cn-hangzhou.aliyuncs.com "D:\VisualStudioDatabase\SharpOSS\SharpOSS\bin\Release\SharpOSS-aliyun.exe"
亚马逊云测试
SharpOSS.exe amazon your_buacket your_access_id your_access_key us-east-1 "D:\VisualStudioDatabase\SharpOSS\SharpOSS\bin\Release\ SharpOSS-aliyun.exe"
哥斯拉测试
看来测试结果没有什么问题,如下图所示
对应的s3存储桶也是接受到传输过来的文件,如下图所示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY