打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# 直接使用HTTP访问阿里云OSS

前言

    相信大家在使用阿里云OSS进行文件上传到时候,基本都是直接采用了阿里云提供的SDK;嗯,确实是简单方便,而且提供了各种语言、各种版本。但是偶尔会涉及到一些小众语言或者不方便集成SDK的项目,所以就需要直接采用Http进行上传。以下示例采用C#语言实现,若有其他语言参考即可:







开发环境:.NET Framework版本:4.8

开发工具:Visual Studio 2022

 









实现步骤

  1. 定义OSS的基础信息
readonly string endpoint = ""; readonly string accessKeyId = ""; readonly string accessKeySecret = ""; readonly string bucketName = "";

  1. 参数加密算法
  private string HmacSha1(string data)  {      var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(accessKeySecret));      var dataBuffer = Encoding.UTF8.GetBytes(data);      var hashBytes = hmacsha1.ComputeHash(dataBuffer);      return Convert.ToBase64String(hashBytes);  }
  1. 对数据进行签名
private string Sign(string uploadName){    string data = $"PUT\n\ntext/plain\n{DateTime.Now.ToUniversalTime().ToString("r")}/{bucketName}/{uploadName}";    return HmacSha1(data);}


  1. 上传调用
public async Task<string> Upload() { string uploadName = "test/123.txt"; string uploadPath = "d:\\123.txt";
string sign = Sign(uploadName); string authorization = "OSS " + accessKeyId + ":" + sign; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", authorization); byte[] bytes = System.IO.File.ReadAllBytes(uploadPath); HttpContent content = new ByteArrayContent(bytes); content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/plain"); var res = client.PutAsync(bucketEndpoint + uploadName, content).Result; string result = await res.Content.ReadAsStringAsync(); return result; }

  1. 若以上基础信息放在前端怕被暴露,可考虑将签名封装为接口供前端调用或者做中转调用(浪费资源)。 

 

实现效果

 



☛☛☛点击此处下载源码☚☚☚



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java 加解密技术系列之 HMAC
银行卡四要素认证
使用 AcceptTcpClientAsync 进行 异步 操作
WebAPI-HTTP编程模型
C# Socket 网络编程
VB.NET环境下的Socket编程举例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服