开源文件服务器file-service介绍
File-service
一个基于ASP.NET Core的可伸缩、通用的文件服务器。
通常后端项目可能会有头像、图片、音频、视频等上传/下载需求,这些需求都可以抽象为文件服务。
功能特点
支持Linux(推荐)、Windows
可伸缩式架构,支持部署1-N台文件服务器
RESTful架构的API接口,支持多语言客户端
支持文件秒传、断点续传、远程拉取上传
支持为用户指定磁盘空间配额
支持自定义文件处理器
项目地址
https://github.com/md-frank/file-service
系统架构
文件的上传/下载通常由客户端直接与文件服务器交互,上传时需要提供代表用户身份token(由业务服务器生成),成功后会返回文件根地址。
也可以直接由业务服务器上传返回文件根地址给客户端。
源码中包含基于.Net Standard的服务端SDK,可以生成token、上传文件等
源码中包含基于.Net Standard的客户端SDK,可以上传/下载文件等
后端使用
配置业务服务器
//Startup.cs代码片段public void ConfigureServices(IServiceCollection services)
{ //....services.AddFileService(opts =>{opts.Host = "fs.mondol.info"; //文件服务器域名opts.AppSecret = "xxxxxx"; //加密密钥,需要与文件服务器相同});
}
生成访问令牌
IFileServiceManager fileSvceMgr; //此实例可通过DI框架获得//根据业务规定其意义,例如:1-代表管理员,2-代表用户var ownerType = 2;var ownerId = 2; //如果ownerType=2,则为用户IDvar validTime = TimeSpan.FromDays(2); //token有效期var ownerToken = fileSvceMgr.GenerateOwnerTokenString(ownerType, ownerId, validTime);
前端使用
文件上传
IFileServiceClient fileClient; //此实例可通过DI框架获得var ownerToken = "业务服务器返回的token";var periodMinute = 0; //有效期,0不过期var updResult = await fileClient.UploadAsync(ownerToken, "文件路径", periodMinute);var url = updResult.Data.Url; //得到文件根地址
URL格式说明
完整URL格式是这样的:https://domain.com/{fileToken}/{handler}/{modifier}
fileToken
:是本次上传文件的唯一标识符
handler
:文件处理器,可以是image(图片处理器)、video(视频处理器)、raw(返回原文件)等
modifier
:【可选】文件处理器参数,例如,image处理器,可以指定128x128_png
文件上传成功后返回的文件根地址(updResult.Data.Url)
就是截至到https://domain.com/{fileToken},URL后面部分由客户端自己去拼接
下面举例说明:
下载原文件
文件根地址/raw,例如:
http://file.domain.com/files/1iYQTU7fEUgaa~URSVwaCqQKFml_IAAAAAgAAAAbhmsFjiUUQwCPn2ngI1QcvsSp0AA/raw
下载128x128大小的缩略图(原文件是图像)
文件根地址/image/128x128,例如:
http://file.domain.com/files/1iYQTU7fEUgaa~URSVwaCqQKFml_IAAAAAgAAAAbhmsFjiUUQwCPn2ngI1QcvsSp0AA/image/128x128
下载128宽,高等比缩放的缩略图(原文件是图像)
文件根地址/image/128x,例如:
http://file.domain.com/files/1iYQTU7fEUgaa~URSVwaCqQKFml_IAAAAAgAAAAbhmsFjiUUQwCPn2ngI1QcvsSp0AA/image/128x
原图是JPG格式,下载png格式的图像
文件根地址/image/raw_png,例如:
http://file.domain.com/files/1iYQTU7fEUgaa~URSVwaCqQKFml_IAAAAAgAAAAbhmsFjiUUQwCPn2ngI1QcvsSp0AA/image/raw_png
原图是JPG格式,下载png格式的128x128大小的缩略像
文件根地址/image/128x128_png,例如:
http://file.domain.com/files/1iYQTU7fEUgaa~URSVwaCqQKFml_IAAAAAgAAAAbhmsFjiUUQwCPn2ngI1QcvsSp0AA/image/128x128_png
原文地址:https://www.cnblogs.com/mondol/p/file-service.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
开源文件服务器file-service介绍相关推荐
- 弹性文件服务(Scalable File Service,SFS)
弹性文件服务(Scalable File Service,SFS) 弹性文件服务(Scalable File Service,SFS)提供按需扩展的高性能文件存储(NAS),可为云上多个弹性云服务器( ...
- node python做游戏服务哪个适合做服务端_当前的几种开源游戏服务端介绍
当前的几种开源游戏服务端介绍 pomelo Pomelo 是基于 Node.js 的高性能.分布式游戏服务器框架.它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复 ...
- FPGA开源网站和论坛介绍
学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 碎碎思 目录 学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 1.25个FPGA开源网站 1.1 http://OPENCORES.OR ...
- AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍
AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...
- 条形码/二维码之开源利器ZXing图文介绍
全文目录: 基本介绍 二维码(比如:QRCode)的编码和解码演示 条形码(比如:EAN-13)的编码和解码演示 [一]. 基本介绍 : 1-1. ZXing是一个开源Java类库用于解析多种格式的条 ...
- 开源部门文件服务器,开源文件服务器
开源文件服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服务器的操作 ...
- Web service 介绍与简单应用
一.Web service 介绍 什么是 Web service 到目前为止对 Web service 没有统一的定义,这里以一种更容易理解的方式解释.Web service 是一个平台独立的,低耦合 ...
- 容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍
容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍 1 介绍 2 怎样获取 DNS 名字? 3 支持的 DNS 模式 3.1 Service 3.1.1 A 记录 3. ...
- 开源中文切词工具介绍
开源中文分词工具介绍 这里介绍常用的开源中文分词工具,大部分是java实现.如果是java生产环境,建议使用ansj.word或HanNlp. Bakeoff是一个国际中文处理比赛,有多个语料,所以每 ...
- 简账(开源记账软件)-功能介绍
文章目录 简账(开源记账软件)-功能介绍 前言 一.主要技术栈简介 二.主要功能 三.项目难点 四.总结 简账(开源记账软件)-功能介绍 前言 由于自己有记账的需求,在尝试使用过市面上的记账软件后,发 ...
最新文章
- Sql Server函数全解(四)日期和时间函数
- 7、kubernetes 核心技术-Controller 控制器
- Ubuntu 下最简明的翻译词典(调用GoogleAPI,运行在终端)
- Java开发与技术挑战——关于技术的技术思考
- docker安装启动nginx详细步骤
- Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
- java 压缩gz_如何在Java中将.zip压缩为.gz?
- Docker中快速安装Redis
- WebAssembly 的 Wasmer JNI
- 网络流量分类方法调研
- uniapp开发微信小程序,多行文本换行,动态改变文字区域宽度
- 75道程序员面试逻辑思维题及答案解析
- Ubuntu 16.04 LTS安装XDM下载神器
- 【http】微信网站使用的是http80端口或者https443端口访问
- VLookup函数详细教程
- mac彩色球转不停,Mac电脑一直在转圈怎么办?
- 机器人笔记本清灰_小熏的编程日记 » 愉悦的小机器人调教经历(一):使用笔记本为HTC G4提供无线路由...
- 梅州放射性实验室建设布局要求分析
- 转 影像质量评估之锐利度--MTF(SFR)
- 卫星位置计算的c语言,C语言-详细计算GPS卫星位置.doc
热门文章
- NetCore2.0Web应用之Startup
- SAP的SqlAnyWhere中数据库日志文件删除后如何新建
- [webpack3.8.1]Guides-4-Output Management(输出管理)
- 2017-03-10Git版本回退
- 稍微成型点的用WEBSOCKET实现的实时日志LOG输出
- lambda与内置函数
- 小菜学设计模式——观察者模式
- 【转】Ubuntu 修改hosts
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
- 非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)