INFO
RsCode.Storage.LocalStorage
可以完成文件上传到本地服务器,以及上传文件的访问控制,通过在appsettings.json
文件中配置即可拥有这些功能
##使用步骤:
1.appsettings.json中添加上传的配置信息
json
//本地存储配置
"LocalStorage": {
"UploadTokenUrl":"/storage/uptoken", //获取token的地址
"UploadUrl": "/storage/upload", //文件上传地址
"SavePath": "d:\\test\\", //服务器上保存文件的物理路径 必须以/或\ 结尾
"AcccessPath":"/res/", //虚拟文件访问地址开始的标记
"AccessKey": "",//不填
"SecretKey": "",//不填
"Domain": "上传后资源地址", //上传后资源地址,例:http://res.rscode.cn
"Bucket": "", //不填
"Zone": "", //不填
"UploadTokenExpireTime": 30, // 上传token有效时间单位:秒
"DownloadTokenExpireTime": 5,//下载token有效时间
"ManageTokenExpireTime": 5 //管理token有效时间
}
这个示例配置,可以将上传文件post到/storage/upload,保存在d盘test目录下,通过 http://xx.cc/res/xx.xx访问
2.添加存储服务
引用RsCode.Storage.LocalStorage到项目中 添加本地存储服务
csharp
public void ConfigureServices(IServiceCollection services)
{
//其它服务...
services.AddLocalStorage(Configuration);
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//其它服务...
app.UseLocalStorage(Configuration); //本地上传中间件
}
3.获取上传token信息
注入服务 IEnumerable<IStorageProvider>providers
获取实例 var local=providers.FirstOfDefault(s=>s.StorageName=="local");
获取token var tokenInfo=local.GetUploadToken();
4.发送上传请求
//获取本地存储配置
csharp
[Inject]LocalStorageOptions storageOptions { get; set; }
1.获取上传token信息
csharp
var local=providers.FirstOfDefault(s=>s.StorageName=="local");
var tokenInfo=local.GetUploadToken();
模拟上传,提交参数key,token,上传文件,从表单中取值
local.UploadAsync();
5.访问上传的资源
中间件会拦截 LocalStorage.AccessPath
值开头的网址,然后去LocalStorage.SavePath
值定义的物理路径中找文件,如果找到就返回文件 继承ILocalStorageAccess,实现方法AccessFileAsync(),可以自定义资源访问逻辑
WARNING
上传地址不能和现有页面或控制器重名 调试上传时程序退出的办法:
vs 工具-选项-项目和解决方案-web项目,取消 “在浏览器窗口关闭时停止调试程序,在调试停止时关闭浏览器”