【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通用工具库Xmtool使用连载 - OSS文件上传篇的更多相关文章

  1. 开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇

    [Github源码] <上一篇>详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库. 在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密 ...

  2. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  3. js实现oss文件上传及一些问题

    关于兼容性问题,ie8以下的可以使用4.x的版本 一.引入sdk和jq <script src="http://libs.baidu.com/jquery/2.0.0/jquery.m ...

  4. 构建基于阿里云OSS文件上传服务

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...

  5. OSS文件上传及OSS与ODPS之间数据连通

    场景描述        有这样一种场景,用户在自建服务器上存有一定数量级的CSV格式业务数据,某一天用户了解到阿里云的OSS服务存储性价比高(嘿嘿,颜值高),于是想将CSV数据迁移到云上OSS中,并且 ...

  6. PHP实现阿里云OSS文件上传(支持批量)

    上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下:   1.下载阿里云OSS对象上传SDK(P ...

  7. 记一次阿里云oss文件上传服务假死

    引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...

  8. php阿里云oss文件上传

    php的文件上传 文件上传 php的文件上传放在了$_FILES数组里,单文件和多文件上传的区别在于$_FILES['userfile']['name']是否为数组, 不熟悉的可以读一下官方文档 单文 ...

  9. 阿里云OSS文件上传封装

    1.先用composer安装阿里云OSS的PHPSDK 2.配置文件里定义阿里云OSS的秘钥 3.在index控制器里的代码封装 <?php namespace app\index\contro ...

  10. OSS文件上传到阿里云

    <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script&g ...

随机推荐

  1. java基础-集合-day14

    目录 1. 数据结构 算法 2. 本章的重点 集合 3. collections 4. list 5. 泛型 6. 泛型通配符 7. linkedList 8. 模拟linkedList源码 --面试 ...

  2. java - ArrayList的使用

    package list; import java.util.ArrayList; import demo.Hero; public class ListTs { public static void ...

  3. Laravel - blade 基础语法和include的使用

    <!-- 1. 模板中输出PHP变量 --> @section('footer')    <div style="color:#fff">     @par ...

  4. 给Hexo博客文章加密

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 原文地址 这是个啥 首先, 这是 Hexo 生态圈中 最好的 ...

  5. PG数据库存储验证

    PG数据库存储验证 背景 最近学习了SQLServer数据库的varchar和nvarchar的存储 想到PG数据库其实没让选择字符集,也没有nvarchar 所以想学习一下nvarchar的使用情况 ...

  6. [转帖]--build=arm-linux

    今天在arm上用configure生成makefile时报错:configure: error: cannot guess build type; you must specify one 问题: 不 ...

  7. [转帖]Jmeter学习笔记(十一)——定时器

    https://www.cnblogs.com/pachongshangdexuebi/p/11571524.html 默认情况下,Jmeter线程在发送请求之间没有间歇.不设置定时器,短时间内会产生 ...

  8. 【转帖】x86服务器中网络性能分析与调优(高并发、大流量网卡调优)

    最近在百度云做一些RTC大客户的项目,晚上边缘计算的一台宿主机由于CPU单核耗被打满,最后查到原因是网卡调优没有生效,今天查了一下网卡调优的资料,欢迎大家共同探讨. 一.网卡调优方法 1.Broadc ...

  9. [转帖]Python基础之数据类型(一)

    https://www.jianshu.com/p/5c43f6056f77 Python基本数据类型 python系列文档都是基于python3 数字 字符串 列表 元组 字典 集合 一.数字 特性 ...

  10. Systemd设置ulimit的方式与方法

    Systemd设置ulimit的方式与方法 摘要 Linux安装完成之后前面几件事情一般是处理selinux 以及处理ulimit 其实处理文件打开数有多种方法,之前也总结过, 但是最近因为syste ...