C# 华为云OBS通过临时URL实现上传下载文件

**
先在服务端通过AK、SK获取上传下载临时URL,返回到前端进行上传
需要安装.net SDK
https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0001.html
**

/// <summary>
/// 获取上传对象临时URL
/// </summary>
public static CreateTemporarySignatureResponse GetPutObjSignUrl(string fileName)
{
     ObsConfig config = new ObsConfig();
     config.Endpoint = Config.Endpoint;//桶Endpoint
     // 创建ObsClient实例 
     ObsClient obsClient = new ObsClient(Config.AccessKeyId, Config.SecretAccessKey, config);
     // 替换您的过期时间,单位是秒
     long exipreSeconds = long.Parse(Config.exipreSeconds);

     CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();
     request.Method = HttpVerb.PUT;
     request.Expires = exipreSeconds;
     request.BucketName = Config.BucketName;
     request.ObjectKey = fileName;
     request.Headers.Add("content-type", "application/octet-stream");

     CreateTemporarySignatureResponse response = obsClient.CreateTemporarySignature(request);

     return response;
}

/// <summary>
/// 获取下载对象临时URL
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="VersionId">版本号  为空默认最新版</param>
/// <returns></returns>
public static CreateTemporarySignatureResponse GetDownObjSignUrl(string fileName,string VersionId = null)
{
     ObsConfig config = new ObsConfig();
     config.Endpoint = Config.CRMApiUrl;
     // 创建ObsClient实例
     ObsClient obsClient = new ObsClient(Config.AccessKeyId, Config.SecretAccessKey, config);
     // 替换您的过期时间,单位是秒
     long exipreSeconds = long.Parse(Config.exipreSeconds);

     CreateTemporarySignatureRequest request = new CreateTemporarySignatureRequest();
     request.Method = HttpVerb.GET;
     request.Expires = exipreSeconds;
     request.BucketName = Config.BucketName;
     request.ObjectKey = fileName;
     if (!string.IsNullOrEmpty(VersionId))
     {
          request.Parameters.Add("versionId", VersionId);
     }

     CreateTemporarySignatureResponse response = obsClient.CreateTemporarySignature(request);

     return response;
}

**
客户端通过服务端返回的临时URL访问OBS进行上传下载
引入axios.js
**

//上传文件
function uploadFile(){
	var files = document.getElementById('inputfile').files[0]//获取文件流

    utility.httpGet("/api/FileUpload/GetPutObjSignUrl?fileName=" + files.name)
        .done(function (obj) {
             var reopt = {
                 method: "put",
                 url: obj.SignUrl,
                 withCredentials: false,
                 headers: obj.ActualSignedRequestHeaders,
                 validateStatus: function (status) {
                      return status >= 200;
                 },
                 maxRedirects: 0,
                 responseType: 'text',
                 data: files,
            };

	axios.request(reopt).then(function (response) {
         if (response.status < 300) {
             console.log("上传成功,文件名:" + files.name + ",版本号:" + response.headers["x-obs-version-id"]);
         } else {
             console.log(response);
         }
    }).catch(function (err) {
         console.log(err);
    });
   })
}

//下载文件
function DownLoadFile(fileName,VersionID){
	utility.httpGet("/api/FileUpload/GetDownObjSignUrl?fileName="+fileName+"&VersionId="+VersionID)
       .done(function (obj) {
           if (obj) {
               var reopt = {
                   method: "get",
                   url: obj.SignUrl,
                   withCredentials: false,
                   headers: obj.ActualSignedRequestHeaders,
                   validateStatus: function (status) {
                       return status >= 200;
                   },
                   maxRedirects: 0,
                   responseType: 'blob',
              };

              axios.request(reopt).then(res => {
                  const blob = new Blob([res.data], { type: 'text/plain;charset=UTF-8' });
                  const filename = DisplayName;
                  // IE
                  if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                      window.navigator.msSaveOrOpenBlob(blob, filename)
                  } else {
                      let href = window.URL.createObjectURL(blob);
                      f.simulateDownloadByA(href, filename);
                  }
            })
         }
         else {
             console.log("获取临时URL失败。");
         }
    })
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为云OBS(Object Storage Service)是一种可扩展的云存储服务,通过它可以方便地进行文件的存储、备份和批量上传等操作。 要实现华为云OBS文件的批量上传,我们可以采用以下步骤: 1. 首先,需要在华为云上创建一个OBS存储桶。在华为云控制台中,选择OBS服务,然后点击创建存储桶,并根据需要配置存储桶的相关参数。 2. 在本地计算机上准备好需要上传的文件,可以将这些文件放在同一个文件夹中,方便进行批量操作。 3. 接下来,可以使用华为云提供的OBS SDK,根据编程语言的不同选择相应的SDK版本。一般可以通过安装SDK的方式,引入SDK到项目中。 4. 在代码中,首先需要进行OBS的验证,即提供访问华为云账号的认证信息(Access Key和Secret Key),以便进行API调用。 5. 在验证通过之后,可以使用SDK提供的方法,选择需要上传的文件路径和OBS存储桶的名称等相关参数。然后使用循环或批量操作的方式,依次上传文件。 6. 上传过程中,可以监听上传的进度和状态,以便得知文件上传是否成功。 7. 完成文件上传后,可以通过华为云控制台,或者使用OBS SDK提供的API方法,查看已上传的文件。 总的来说,华为云OBS文件的批量上传可以通过使用OBS SDK来实现,在代码中调用相应的API方法,依次上传文件即可。通过这种方式,可以提高上传效率,简化操作步骤,方便批量上传大量文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值