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

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

相关推荐

  • 7月15日鬼节晚上能出门吗

    中元节俗称“鬼节”,节日习俗主要有祭祖、放河灯、祀亡魂、焚纸锭、祭祀土地等。它的诞生可追溯到上古时代的祖灵崇拜以及相关时祭。那么,鬼节晚上能出门吗?能洗头吗?是七月14还是七月15…

    2022年 11月 18日
  • 米酒汤怎么做既简单又好喝啊

    用米酿酒古已有之,唐代就有“把酒话桑麻”和“樽酒家贫只旧醅”的诗句,可见当时的百姓就有用米酿酒的习俗,古代能用到的酿酒方法和食材并不多,喝到酒都是度数比较低的,因为在用蒸馏法提高酒…

    2023年 12月 23日
  • 8090的回忆,都进来瞧一瞧是什么歌

    历届快女快男大PK,不知男士们看了会不会揍我,我首先声明纯属个人意见[捂脸][捂脸][捂脸] 1李宇春PK张杰 李宇春 2005年《超级女声》总冠军,曾两次登上上亚洲版《时代周刊》…

    2022年 11月 14日
  • 维纳斯女神什么意思

    艺术作品中的维纳斯“女神”。从艺术这一侧面看看在数千年的历史中,维纳斯“女神”在社会中扮演的角色是如何变化的。 古代的人们有太多的未知,于是就有了很多的幻想。在遥远的古代,“女神”…

    2022年 11月 5日
  • 青春斗大结局,《青春斗》大结局:丁兰最幸福,于慧最惨,向真最悲催

    《青春斗》大结局:丁兰最幸福,于慧最惨,向真最悲催。这部剧马上就要大结局了,五个女孩子的最终结局会如何收场呢?她们的青春会留下遗憾吗?她们五个人的性格迥异,整天矛盾不断,但是,越吵…

    2022年 11月 12日
  • 求抛物线的标准方程,抛物线上一点的切线方程

    1、本节课重难点的选择。根据学生的实际情况,定义的引出及标准方程的推导仍然是一个难点,尤其是推导标准方程时的坐标系的建立,存在一定的难度;抛物线标准方程的四种形式,在本节课只要求了…

    2023年 3月 18日
  • 内蒙古锡林浩特市棒棒牛食品有限责任公司

    锡林浩特市棒棒牛食品有限责任公司成立于2007年,是一家专业生产草原民族特产食品的企业。主打品牌:搏克牛仔、棒棒牛、锡盟牛、格格牧场等,公司位于锡市中小企业园区,拥有行业先进现代化…

    综合百科 2023年 8月 25日
  • 血污夜之仪式全关卡通关玩法攻略 血污夜之仪式主线通关图文教程

    血污夜之仪式这个游戏有一定的难度,那么一起来看看主线怎么通关吧,血污夜之仪式中,有着众多的隐藏要素与支线剧情,那么单纯的主线该怎么做,怎么通关,下面一起来看看主线通关流程攻略吧。 …

    2022年 11月 5日
  • 广西桂林是享誉世界的旅游城市吗

    芒果旅行日记:广西有座城市,与湖南交界,名气比省会南宁还大。它叫桂林,是中国最先走向世界的旅游城市,曾被评为“世界十大旅游城市”,吸引了很多外国人到此旅游参观,就连曾任美国总统的克…

    2023年 12月 31日
  • 数据统计方法:确定性时间序列的分析法

    时间序列分析是一种动态数据处理的统计方法。该方法基于随机过程理论和数理统计学方法,研究随机数据序列所遵从的统计变化规律,以用于解决实际问题。通常影响时间序列变化的4个要素如下: 长…

    2022年 12月 5日