开源文件服务器file-service介绍
File-service
一個基于ASP.NET Core的可伸縮、通用的文件服務器。
通常后端項目可能會有頭像、圖片、音頻、視頻等上傳/下載需求,這些需求都可以抽象為文件服務。
功能特點
支持Linux(推薦)、Windows
可伸縮式架構,支持部署1-N臺文件服務器
RESTful架構的API接口,支持多語言客戶端
支持文件秒傳、斷點續傳、遠程拉取上傳
支持為用戶指定磁盤空間配額
支持自定義文件處理器
項目地址
https://github.com/md-frank/file-service
系統架構
文件的上傳/下載通常由客戶端直接與文件服務器交互,上傳時需要提供代表用戶身份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
總結
以上是生活随笔為你收集整理的开源文件服务器file-service介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET运行时中的监测和可观测性
- 下一篇: GitHub 发布 2018 年开源项目