实现一个简单的文件服务器命令

非常简单的文件服务,仅实现上传然后生成url。

码云地址 Github地址:https://github.com/pojianbing/LazyFileServer

服务端

服务端提供统一接口,以便各子应用统一上传文件。

1. 安装

Install-Package Lazy.FileServer.Server -Version 1.0.2

2. 配置

"FileServer": { "LocalBase": "C:\upload", "HttpBase": "http://localhost", /* * 文件路径计算方式,分为Date和Hash * Date: * 格式: appName/year/month/day/上传文件名 * 重复文件处理: 重复文件追加序号, 例如上传a.txt, 存在重复,则编号为a.1.txt。 再次上传则为a.2.txt * 示例: http://localhost/spider/2022/03/03/c220210105154619.348.jpg * * Hash: * 格式: appName/hash前两位/hash3到4位/hash.扩展名 * 重复文件处理: 重复hash会覆盖 * 示例: http://localhost/spider/zq/I9/zqI98OULV8j60XbNSTTxQg==.jpg */ "FilePathCalculatorType": "hash", // 应用 "Apps": [ { "AppId": "1", "AppName": "spider", "AppKey": "123456" } ]}
builder.Services.AddLazyFileServer(builder.Configuration);app.UseLazyFileServer("/");

经过简单的配置,一个上传服务已经搭建好了。本例中通过http://localhost:5001/,header设置appid,appkey即可上传。

3.自定义路径计算方式

  • 定义IFilePathCalculator实现类
public class CustomFilePathCalculator : IFilePathCalculator{ public string Name { get { return "custom"; } } /// <summary> /// 直接返回文件名 /// </summary> /// <param name="input"></param> /// <returns></returns> public string Calculate(FilePathCalculatorInput input) { return input.FileName; }}
  • 注入服务
builder.Services.AddLazyFileServer(builder.Configuration).AddFilePathCalculator<CustomFilePathCalculator>();
  • 修改配置
"FilePathCalculatorType": "custom"

4.自定义应用查找器

默认从AppSetting查找.

  • 定义CustomAppFinder实现类
public class CustomAppFinder : IAppFinder{ private static List<AppInfo> Apps = new List<AppInfo>() { new AppInfo{ AppId = "1", AppKey = "654321", AppName = "spider" } }; public Task<AppInfo> FindAsync(string appid) { return Task.FromResult(Apps.FirstOrDefault(e => e.AppId == appid)); }}
  • 替换默认服务
builder.Services.AddLazyFileServer(builder.Configuration).ReplaceAppFinder<CustomAppFinder>();

客户端

前端应用理论上可以直接调用服务的上传接口,但这样会将appid,AppKey裸露在外界。因此需要各应用包裹下,提供一个上传端点。

1. 安装

Install-Package Lazy.FileServer.Client -Version 1.0.2

2. 示例

using Microsoft.AspNetCore.Mvc;namespace Lazy.FileServer.Client.WebApi.Host.Controllers{ [ApiController] public class FileController : ControllerBase { private readonly ILogger<FileController> _logger; private IHttpContextAccessor _httpContextAccessor; public FileController(ILogger<FileController> logger, IHttpContextAccessor httpContextAccessor) { _logger = logger; _httpCOntextAccessor= httpContextAccessor; } [HttpPost()] [Route("Upload")] public async Task<IEnumerable<string>> UploadAsync() { var client = new FileServerClient("http://localhost:5001", "1", "123456"); return await client.UploadAsync(_httpContextAccessor.HttpContext); } }}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(11)
上一篇 2022年 11月 9日 下午4:22
下一篇 2022年 11月 9日 下午4:32

相关推荐

  • 好看的电影推荐我是传奇2(我是传奇2电影上映)

    他和山姆 记得第一次看这部电影是在网吧,《我是传奇》称得上一部丧尸片中,灾难片里数一数二的电影,卖座,而且值得怀念。一个人的世界,只有一条狗陪伴。这个时候才发现,原来值得信赖的才是…

    2023年 6月 3日
  • 放榜了多省高考分数线出炉(新高考8省的物理类分数线)

    高考阅卷工作接近尾声,全国各省份陆续公布高考成绩及各批次各类录取最低控制分数线。6月23日起,全国多个省份将先后“放榜”。 综合官方发布信息来看,各地教育考试院为方便考生及时查询成…

    2023年 4月 29日
  • 高考议论文的素材积累分类

    从素材的性质来看,议论文的素材可分为同质和异质两类。在高考议论文写作中,我们如果将同质素材和异质素材区分运用,会使说理更加雄辩有力。 【典型文段】 “盖余之勤且艰若此”,大儒宋濂少…

    2022年 11月 5日
  • 明日之子九大厂牌是啥意思

    音乐厂牌,就是指音乐专辑的出版公司,特别是摇滚或独立音乐等领域。 明日之子 而当下热播的《明日之子》似乎正在探索厂牌对个人的诠释。这个不同于以往的选秀节目另辟蹊径,将厂牌和偶像直接…

    2023年 1月 7日
  • 新科、韩电未达标!空调偷工减料返潮?

    2022空调冷年是悲喜交加的一年,这一年前悲后喜,这主要得益于今年天气的暴热,前后两波酷热拯救了华北、华东、华中和西南等全国大部分地区,老天的帮忙将5月之前的惨淡一扫而光。然而这一…

    2022年 11月 9日
  • 营销的4p理论,交友平台的4p营销理论

    一、4P理论的起源 1950年美国哈佛大学教授尼尔·鲍顿(N. H. Bor den)于最早提出了营销组合的概念,并确定了营销组合的12 个要素。 1960年麦卡锡将他老师理查德·…

    2023年 4月 8日
  • 步履不停,步履不停

    每日一诗 步履轻轻入花里, 枝头朝露湿我衣。 浅浅一嗅心半醉, 归时不知东与西。 文/杨福成 步履是人生的节奏,步履是万物的节奏。 春风是美好的步履。 您看它柔柔的,轻轻的,温暖随…

    2022年 11月 27日
  • 一代神作《qq三国》为何陨落了

    大家好 我是非常君 谈起我们中国的四大名著,三国演义、西游记、水浒传、红楼梦,其中西游记作为神话广为流传,并且是转化为电视剧最多的名著。而转化成游戏最多的就属三国演义了,不管是街机…

    2023年 6月 11日
  • 北师大版六年级上册数学知识点归纳

    北师大版六年级上册数学知识汇总预习 第一单元 小数除法 1、除数是整数的小数除法计算法则: 除数是整数的小数除法,按照整数除法的法则去除,商的小数点要和被除数的小数点对齐;如果除到…

    综合百科 2023年 4月 3日
  • 各国教师节日期是什么是多少,世界各国教师节排名

    教师节,是世界上许多国家或地区设立的一个重要节日,旨在表彰和感谢广大教育工作者为社会发展所做出的贡献。 教师作为人类文明的重要传承者,肩负着培养下一代的重要使命,对于社会的发展和进…

    2023年 12月 29日