首页 > 其他分享 >开源.NetCore通用工具库Xmtool使用连载 - OSS文件上传篇

开源.NetCore通用工具库Xmtool使用连载 - OSS文件上传篇

时间:2024-02-13 20:44:36浏览次数:33  
标签:文件 存储 NetCore oss 替换成 Xmtool 上传 OSS

【Github源码】


《上一篇》 介绍了Xmtool工具库中的图像处理类库,今天我们继续为大家介绍其中的OSS文件上传类库。

将本地文件上传到服务器是软件系统经常会遇到的需求,例如:设置用户头像,上传Excel报表等等;涉及到网络访问性能、存储空间等因素的考虑,通常我们会选择使用第三方的对象存储服务,本类库将比较常用的第三方对象存储服务进行了封装整合,让用户能够使用一套API将文件上传到不同的对象存储服务上,方便了用户使用。

目前,类库支持了七牛、阿里云、腾讯3种对象存储服务。

public enum OssProvider
{
    Unset,
    Qiniu,		// 七牛
    Alibaba,	// 阿里云
    Tencent		// 腾讯云
}

在使用过程中,根据需要使用的OSS存储服务获取OSS对象,即可调用方法进行文件上传,下面将逐步说明。

一、获取OSS对象

首先,根据我们准备使用的OSS存储服务类型,获取对应的OSS操作对象。

IOssProvider oss = Xmtool.Oss(OssProvider.Qiniu);
// TODO

二、初始化配置

OSS操作对象,必须进行初始化配置才能进行文件上传操作,不同的存储服务类型配置参数略有不同,下面将一一说明。

1. 七牛存储服务初始化配置

IOssProvider oss = Xmtool.Oss(OssProvider.Qiniu);
oss.Config("替换成自己的AppKey", "替换成自己的AppSecret", "替换成自己的域名地址");
// TODO

2.阿里云存储服务初始化配置

IOssProvider oss = Xmtool.Oss(OssProvider.Alibaba);
oss.Config("替换成自己的AppKey", "替换成自己的AppSecret", "替换成自己的域名地址", "替换成存储桶对应的EndPoint地址");
// TODO

3.腾讯云存储服务初始化配置

IOssProvider oss = Xmtool.Oss(OssProvider.Tencent);
oss.Config("替换成自己的AppId", "替换成自己的SecretId", "替换成自己的SecretKey", "替换成自己的域名地址", "替换成存储桶对应的Region简称");
// TODO

三、上传本地文件

经过上一步的初始化配制后,就可以进行文件上传操作了;类库支持文件路径和文件流两种上传方式。

通过文件路径上传,方法如下:

IOssProvider oss = Xmtool.Oss(OssProvider.Qiniu);
oss.Config("替换成自己的AppKey", "替换成自己的AppSecret", "替换成自己的域名地址");
string url = oss.UploadFile("替换成自己的存储桶名称", "要上传的本地文件路径", "上传到服务器的文件key,如果不传将随机生成");
// 返回的url即是上传成功后的文件访问地址,是否可公开访问根据存储桶的访问权限设定。
// TODO 

四、上传文件流

通过文件流上传,方法如下:

IOssProvider oss = Xmtool.Oss(OssProvider.Qiniu);
oss.Config("替换成自己的AppKey", "替换成自己的AppSecret", "替换成自己的域名地址");
using (FileStream stream = new FileStream("要上传的本地文件路径", FileMode.Open))
{
    string url = oss.UploadStream("替换成自己的存储桶名称", stream, "上传到服务器的文件key,如果不传将随机生成");
	// TODO
}

五、设置上传文件ContentType

在上传文件时,如果不指定ContentType,除七牛会自动判断上传文件类型外,阿里云和腾讯云都会将文件默认成二进制流文件,这在后面的访问过程中会影响文件的预览等操作。因此,我们可以在上传时明确指定文件的类型。

IOssProvider oss = Xmtool.Oss(OssProvider.Qiniu);
oss.Config("替换成自己的AppKey", "替换成自己的AppSecret", "替换成自己的域名地址");
string url = oss.SetContentType("image/png")
    .UploadFile("替换成自己的存储桶名称", "要上传的本地文件路径", "上传到服务器的文件key,如果不传将随机生成");
// TODO 

六、是否使用HTTPS

IOssProvider oss = Xmtool.Oss(OssProvider.Qiniu);
oss.Config("替换成自己的AppKey", "替换成自己的AppSecret", "替换成自己的域名地址");
oss.SetUseHttps(true);
// TODO

### [【Github源码】](https://github.com/softwaiter/Xmtool)

标签:文件,存储,NetCore,oss,替换成,Xmtool,上传,OSS
From: https://www.cnblogs.com/bcbr/p/18014808

相关文章

  • CF1771F Hossam and Range Minimum Query 题解
    题目链接:CF或者洛谷比较不错的题,出现奇数次出现的这种问题,比较容易想到一种运算,那就是异或和运算。如果一个区间上一个数出现偶数次,则它对于异或和的贡献为\(0\),那么很显然,我们维护下区间异或和即可判断一个区间上是否存在出现奇数次的数。然后我们注意到\(1\oplus2\oplu......
  • 基于.NetCore开发博客项目 StarBlog - (31) 发布和部署
    前言StarBlog第一期规划的功能基本完成了,我想着在春节前应该可以把第一期的系列文章完结掉,那么在差缺补漏阶段就剩下开发项目的最后一个环节——部署了。PS:事实上,还有一个很重要但又经常被略过的测试环节我们没有提到,因为时间关系,第一期规划我没有写单元测试和集成测试,在开......
  • 云计算 - 对象存储服务OSS技术全解
    本文全面深入地探讨了对象存储服务(OSS)的核心技术、基础知识和高级功能。从媒体存储到数据备份,再到数据仓库与数据湖,我们不仅解析了OSS在各种应用场景下的关键角色,还深入讨论了其与机器学习、多媒体处理以及日志和监控等多个开发场景的结合。关注【TechLeadCloud】,分享互联网架......
  • 自己搭一个 OSS 服务,和阿里云的一毛一样
    文件上传是常见需求,一般我们不会直接把文件保存在服务器的某个目录下,因为服务器的存储容量是有限的,这样不好扩展。我们会用OSS(ObjectStorageService)对象存储服务来存文件,它是支持分布式扩展的,不用担心存储容量问题,而且也好管理。比如阿里云的OSS服务。但是有一些业务场景下,数......
  • 学习AJAX时出现has been blocked by CORS policy: Cross origin requests are only su
    练习js时用到ajax,console报错:AccesstoXMLHttpRequestat‘file:///Users/XXX/Downloads/nav/nav.json’fromorigin‘null’hasbeenblockedbyCORSpolicy:Crossoriginrequestsareonlysupportedforprotocolschemes:http,data,chrome,chrome-extension,chro......
  • nginx-go-crossplane crossplane golang 版本的nginx 配置解析包
    nginx-go-crossplane属于python版本crossplanenginx配置解析包的golang移植可以实现nginx配置解析转换为json格式的数据,当然也支持将json转换为nginx配置格式说明对于希望基于nginx搞自己的流量统一平台,同时希望基于api管理的,nginx-go-crossplane是一个很不错的选择......
  • Django - admin 表单编辑页面,增加自定义功能,前端上传视频到oss
    #背景:可以在admin编辑页面原有基础上,增加一些可定制的功能,如:在本地上传图片到oss,减少服务器的带宽压力,下面就以此为例。示例图:  一。models.py#video可以直接用字符串存储,因为最终里面只有有一串oss的视频路径classNews(models.Model):OSS_URL='https://xxxx......
  • vue 环境配置(使用cross-env配置)
    vue环境配置(使用cross-env配置)通过定义不同的打包命令,更改项目环境变量。1、下载cross-even(可跨平台设置node环境变量)npminstallcross-env--save-dev2、package.json文件查询scripts,在其中加入如下代码:(其为不同环境的打包命令,可自定义)。"build:qa":"cr......
  • 详解Smooth_L1_Loss函数的计算方式
    详解SmoothL1Loss函数的计算方式在深度学习中,SmoothL1Loss函数是一种用于回归任务的损失函数。它在一定程度上克服了均方误差(MSE)损失函数的局限性,特别适用于处理离群值。简介SmoothL1Loss函数是HuberLoss的一种近似形式。它通过引入平滑因子,使损失函数在离群值附近呈现鲁棒......
  • .NetCore开发人员首选框架---Bridge(Abp-VNext + Vue3)
    bridge系统是基于Abp-VNext+Vue3开发的一套前后端分离的通用权限管理系统,不论是单体服务,还是微服务都可在此基础上自由扩展,此框架组合可以说是集成了.netcore在BS架构领域最前沿的技术,框架简介如下:##......