Asp.Net Core 使用IBrowserFile完成图片上传
Asp.Net Core 使用IBrowserFile完成图片上传
写在开头
前几天弄自己的项目时遇到的问题,发现了asp.net core 新增的IBrowserFile
接口,事实上他可以满足大多数文件的上传,此处我仅以图片作为示例。
实现
添加一个帮助类FileHelper
,遵循一种规范,即将静态文件资源存放至wwwroot
文件夹下
public class FileHelper
{
private static long maxFileSize = 1024 * 512;//大小
public static async Task<string> AddImage(IBrowserFile file,string Factory)
{
var type = file.ContentType.Split('/');
var picloca = $"/{type[0]}{DateTime.Now.ToString("yyyyMMddhhmmssffff")}.{type[1]}";
var fileloca = $"images/{Factory}/{DateTime.Now.ToString("yyyy-MM")}";
var path = Path.Combine(Environment.CurrentDirectory, $"wwwroot/{fileloca}"
);
if (!Directory.Exists(path))
{
//创建文件夹
try { Directory.CreateDirectory(path); } catch { }
}
await using FileStream fs = new($"{path}/{picloca}", FileMode.Create);
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
return $"{fileloca}{picloca}";//返回图片路径
}
}
ContentType
属性的值是像image/png
,application/pdf
这种形式。而excel文件则会变成这种application/vnd.ms-excel
,在保存的时候手动改一下即可
picloca = $"/{type[0]}{DateTime.Now.ToString("yyyyMMddhhmmssffff")}.xls";
部分对应关系:
·doc
=> ‘application/msword’,
·bin
=> ‘application/octet-stream’,
·exe
=> ‘application/octet-stream’,
·so
=> ‘application/octet-stream’,
·dll
=> ‘application/octet-stream’,
·pdf
=> ‘application/pdf’,
·ai
=> ‘application/postscript’,
·xls
=> ‘application/vnd.ms-excel’,
·xlsx
=>response.setContentType(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”);
写在最后
当我们将图片保存至wwwroot
文件夹后,就可以直接通过https://<hostname>/images/....
查看了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)