开源文件服务器file-service介绍
File-service
一個(gè)基于ASP.NET Core的可伸縮、通用的文件服務(wù)器。
通常后端項(xiàng)目可能會(huì)有頭像、圖片、音頻、視頻等上傳/下載需求,這些需求都可以抽象為文件服務(wù)。
功能特點(diǎn)
支持Linux(推薦)、Windows
可伸縮式架構(gòu),支持部署1-N臺(tái)文件服務(wù)器
RESTful架構(gòu)的API接口,支持多語言客戶端
支持文件秒傳、斷點(diǎn)續(xù)傳、遠(yuǎn)程拉取上傳
支持為用戶指定磁盤空間配額
支持自定義文件處理器
項(xiàng)目地址
https://github.com/md-frank/file-service
系統(tǒng)架構(gòu)
文件的上傳/下載通常由客戶端直接與文件服務(wù)器交互,上傳時(shí)需要提供代表用戶身份token(由業(yè)務(wù)服務(wù)器生成),成功后會(huì)返回文件根地址。
也可以直接由業(yè)務(wù)服務(wù)器上傳返回文件根地址給客戶端。
源碼中包含基于.Net Standard的服務(wù)端SDK,可以生成token、上傳文件等
源碼中包含基于.Net Standard的客戶端SDK,可以上傳/下載文件等
后端使用
配置業(yè)務(wù)服務(wù)器
//Startup.cs代碼片段public void ConfigureServices(IServiceCollection services) { ? ?//....services.AddFileService(opts =>{opts.Host = "fs.mondol.info"; //文件服務(wù)器域名opts.AppSecret = "xxxxxx"; //加密密鑰,需要與文件服務(wù)器相同}); }生成訪問令牌
IFileServiceManager fileSvceMgr; //此實(shí)例可通過DI框架獲得//根據(jù)業(yè)務(wù)規(guī)定其意義,例如: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; //此實(shí)例可通過DI框架獲得var ownerToken = "業(yè)務(wù)服務(wù)器返回的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:是本次上傳文件的唯一標(biāo)識(shí)符
handler:文件處理器,可以是image(圖片處理器)、video(視頻處理器)、raw(返回原文件)等
modifier:【可選】文件處理器參數(shù),例如,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社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的开源文件服务器file-service介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET运行时中的监测和可观测性
- 下一篇: Microsoft Tech Summi