开源文件服务器file-service介绍

File-service

一个基于ASP.NET Core的可伸缩、通用的文件服务器。
通常后端项目可能会有头像、图片、音频、视频等上传/下载需求,这些需求都可以抽象为文件服务。

功能特点

  • 支持Linux(推荐)、Windows

  • 可伸缩式架构,支持部署1-N台文件服务器

  • RESTful架构的API接口,支持多语言客户端

  • 支持文件秒传、断点续传、远程拉取上传

  • 支持为用户指定磁盘空间配额

  • 支持自定义文件处理器

项目地址

https://github.com/md-frank/file-service

系统架构

640?wx_fmt=png

  • 文件的上传/下载通常由客户端直接与文件服务器交互,上传时需要提供代表用户身份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

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【二分】走亲戚

题目大意 平面上有n个点,给出m个询问,每个询问要回答从x轮流往右往左去到最远的点,最后到达的点 解题思路 对于每个询问,每次二分左右可以到多远,直到不能动为止 考虑时间,对于重复走一个范围的&#xf…

CF1375F-Integer Game【交互】

正题 题目链接:https://www.luogu.com.cn/problem/CF1375F 题目大意 给出a,b,ca,b,ca,b,c。先手每次指定一个数kkk,然后后手指定一个数字加上kkk,若有相同的数则先手胜利,操作次数超过100010001000后后手胜。后手不能两次操作同一个数。 你…

Stars(树状数组)

题意: m个星星,一个星星的等级取决于有多少其他星星的横纵坐标不大于它,如果有x个,该星星等级为x 问各个等级的星星有多少个? (题目会按照y的升序给出星星坐标) 题解: 树状数组入…

AtCoder Regular Contest 105 部分 NIM游戏

TESyyds,本来以为又要3:1,结果创造历史!!!非常激动啊好久好久没看过让二追三了。 无缝衔接回旋踢,qa插眼we。送给雷达哥 A - Fourtune Cookies 签到题 #define IO ios::sync_with_stdio(false);cin.tie(…

【状压DP】作业

题目大意 有n个数,让你对其排列,令排列后的第i个数字为sis_isi​,该排列要满足: ∀i∈[1,n),si≤si1\forall i\in [1,n),s_i\leq s_{i1}∀i∈[1,n),si​≤si1​∀i∈[1,n),∣(min(si,si1),max(si,si1))∩{sj∣k>i}∣≤bi\fora…

Lost Cows(树状数组)

试题链接 题意: 求出一个1到n的排列,这个排列只告诉了你从第二个数字开始的比这个数字小的数的个数。 题解: 如果一个数p,p的前面有m个比他小的数,后面有n个比他小的数,那p的位置…

P2611-[ZJOI2012]小蓝的好友【Treap,扫描线】

正题 题目链接:https://www.luogu.com.cn/problem/P2611 题目大意 r∗cr*cr∗c的网格上有nnn个标记点,然后求有多少个矩形包含至少一个标记点。 1≤r,c≤4104,1≤n≤1051\leq r,c\leq 4\times 10^4,1\leq n\leq 10^51≤r,c≤4104,1≤n≤105 保证数据随机 解题思路…

上学要迟到了【最短路转化】

上学要迟到了 题目 牛牛早上起床一看,自己睡过了,赶紧起床准备去学校,他去学校只有两种方式,坐公交车和步行,牛牛去学校是一条直线,这条直线上总共有 nnn 个车站,车站之间的距离都是相等的&am…

Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用...

概述Microsoft Tech Summit 2018 微软技术暨生态大会将于10月24日至27日在上海世博中心举行,这也会是国内举办的最后一届 Tech Summit,2019 年开始会以 Microsoft Ignite Tour 的形式出现,大家可以在官网查看本次会议信息:https:/…

牛牛和牛可乐的赌约

来源:牛客网: 牛牛和牛可乐的赌约 时间限制:C/C 2秒,其他语言4秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 牛可乐发明了一种n面骰子(点数分别从1{}1到{}nn&…

【结论】友谊序列

题目大意 有两个大小为n的数组a,b(所有数互不相等,且大于0),a,b中的数组成集合S,问可以构成aixorbj∈Sa_i\ xor\ b_j\in Sai​ xor bj​∈S的数对(i,j)的方案数的奇偶性 解题思路 若aixorbjaka_i\ xor\ b_ja_kai​ x…

GitHub 发布 2018 年开源项目趋势预测

Github 发布了一篇博客,预测了 2018 年开源项目的发展趋势,这些趋势可以帮助开发人员在共享知识的同时,寻求方法简化流程,并 get 新技能。去年,Github 有来自将近 200 个国家的 2400 万的开发者聚集在一起,…

YbtOJ#652-集合比较【Treap】

正题 题目链接:http://www.ybtoj.com.cn/problem/652 题目大意 定义一个元素为一个有序集合包含两个元素C{A,B}C\{A,B\}C{A,B} 集合C{A,B}C\{A,B\}C{A,B}的大小以AAA为第一关键字,BBB为第二关键字比较大小。 开始有两个元素S{S,S},T{T,T}S\{S,S\},T\{T,T\}S{S,S},…

牛牛和牛可乐的赌约2

来源:牛客网: 时间限制:C/C 2秒,其他语言4秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 牛牛感觉在上一次赌约中,情况对于自己非常不利,所以决定再赌一…

【线段树】二进制

题目大意 有一个二进制数&#xff0c;让你进行以下操作&#xff1a; 将一个区间的数字按升/降序排列查询一个区间的数字构成的数 解题思路 可以用线段树来维护每一位&#xff0c;预处理出2的整次幂&#xff0c;上传时把左儿子乘上右儿子长度次幂即可 code #include<cstd…

Codeforces Round #676 (Div. 2) E待补

“楼下一个男人病得要死&#xff0c;那间隔壁的一家唱着留声机&#xff0c;对面是弄孩子。楼上有两人狂笑&#xff1b;还有打牌声。河中的船上有女人哭着她死去的母亲。人类的悲欢并不相通&#xff0c;我只觉得他们吵闹。” A - XORwice 把a和b看成二进制数处理&#xff0c;不…

YbtOJ#883-最大的割【带修线性基】

正题 题目链接:http://www.ybtoj.com.cn/contest/118/problem/3 解题思路 给出nnn个点&#xff0c;mmm次动态插入一条无向边询问&#xff1a;割掉一些边使得图中至少两点不连通&#xff0c;并且割掉的边异或和最大。 询问之间相互独立 1≤n≤500,1≤m≤10001\leq n\leq 500,…

.NETCore 简单且高级的库 csredis v3.0.0

前言.NETCore 从1.0发布历经坎坷&#xff0c;一开始各种库缺失到现在的部分完善&#xff0c;走到今天实属不易。比如 redis-cli SDK 简直是坑出不穷。过去 .net 最有名望的 ServiceStack.Redis 早已沦为商业用途&#xff0c;在 .NETCore 中使用只能充值&#xff1b;后来居上的 …

1003 Express Mail Taking

题意&#xff1a; 有m个快递&#xff0c;放在n个快递柜里&#xff08;成顺序排布&#xff09;&#xff0c;从1号快递柜出发&#xff0c;每次要先到k号快递柜输入密码&#xff0c;然后才可以取指定的快递柜取货品&#xff0c;都取完后再回起点&#xff0c;问最短距离是多少 题…

序列区间

题目大意 给你n个数&#xff0c;问你有多少个区间满足∏ilrai∑ilraik\frac{\prod_{il}^r a_i}{\sum_{il}^r a_i}k∑ilr​ai​∏ilr​ai​​k 解题思路 原始等同于∏ilraik⋅∑ilrai\prod_{il}^r a_ik\cdot\sum_{il}^r a_i∏ilr​ai​k⋅∑ilr​ai​ 先枚举起点&#xff0c;…