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

非常简单的文件服务,仅实现上传然后生成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

相关推荐

  • 母亲节手工爱心折叠贺卡,做一个美丽又漂亮的母亲节贺卡

    一年一度的母亲节快到了 母亲对我们的爱是最伟大最无私的。在母亲节到来之际,孩子们可以亲手做一个贺卡当礼物送给妈妈,表达对妈妈的爱 下面我们就做一个最简单的贺卡,孩子们都能学会 用很…

    2023年 5月 30日
  • 祖孙三代,“祖孙三代”从事烟草、电力等行业,这是一种什么样的可贵精神?

    前段时间,江西南昌周公子自爆自家多人在交通行业,名副其实的“交通世家”,让很多不同系统的祖孙同业人紧张万分。 随后,也就是6月19日,著名的中国烟草公司下发通知,要求员工不能谈收入…

    2022年 11月 30日
  • 今日立冬请注意保暖,立冬防寒小贴士

    立冬 农历九月十九 2017年11月7日 立冬图 立冬 早在《吕氏春秋·十二月纪》中就确立了立春、春分、立夏、夏至、立秋、秋分、立冬、冬至这八个节气。这是二十四节气中最重要的八个节…

    2023年 1月 22日
  • 我最难忘的端午节

    每逢端午节,就会想起2018年的端午节。 那是2018年6月18日,农历戊戌年五月初五,中华传统端午节。 这是一个特别的端午节。 女儿家换房搬家,她们随搬家公司一同前往新家,我们二…

    综合百科 2022年 12月 1日
  • 古代冻梨之年是指多少岁

    ​古时候,人们称谓年龄一般都不会直接使用数字,而是用一些文字代替。 如:而立之年,指的是三十岁的男子;豆蔻之年,指的是十三岁的女孩等等。 襁褓 指的是刚刚会笑,未满周岁的婴儿; 孩…

    2023年 11月 23日
  • 受让和转让意思上有差别吗(转让和受让有什么不同)

    欢迎光临有料知识点,我们一起识多点! 老规矩,我们先来看一则来自财联社的快讯: 【银保监会:同意中信集团受让财政部持有的中国华融24亿股内资股】财联社11月17日电,据银保监会网站…

    综合百科 2023年 10月 14日
  • 武汉市民书法作品欣赏,关于武汉原创书法

    铝合金编字 兰艳 摄 中新网武汉12月17日电 (兰艳)一根彩色的铝合金线,在手上灵活地将它扭转、弯曲、缠绕、捏合,短短5分钟时间,一个熠熠生辉的汉字赫然而出。17日,武汉市民李厚…

    2023年 11月 29日
  • 蟾蜍吃蛇

    在动物界,蛇是蟾蜍、青蛙等动物的天敌,经常以这些动物为食。但被逼到绝境的蟾蜍也可能逆袭,对蛇发起攻击。不久前,有人拍摄到一段蟾蜍吃蛇的影片,那只大蟾蜍紧紧咬住蛇的头部,想要将一只近…

    2022年 11月 5日
  • 倩女幽魂69射手

    射手一直是倩女幽魂中比较有争议的职业,据说射手有两种,一种是输出爆炸,属性能力都靠前的,那种叫做射爷。而一般属性的那种,才叫射手。虽然是如今各种新职业横行,但也有不少玩家对射手情有…

    2022年 12月 1日
  • 鞍山全民健身中心

    新华社沈阳4月23日电(记者李铮、高爽)“只要天气好,每天我俩都会到这儿打打球。”22日一早,家住辽宁省鞍山市铁东区的李伟夫妇来到烈士山公园的室外乒乓球活动基地,挥舞球拍、切磋球技…

    2023年 5月 2日