.net core 将图片存入environment.WebRootPath 后台服务时 对于图片的访问

将图片存入environment.WebRootPath 后台服务时 对于图片的访问

直接后台访问子资源路径,虽然这样访问对于前端会方便很多 但是实际上这样访问会暴露相应的api接口,对于安全的上的考虑,采用base64的字符串进行显示,字符串前需要加入data的类型,便于识别,此操作也可以在前端进行展示完成,但是作为主要开发后端的人来说,还是后台进行转化方便一些,还有就是有的浏览器对子资源的访问限制,,,令人头痛

一个小例子

environment.WebRootPath :图片存的路径

后台读取方法如下:

var content = Path.Split("\\");
var datatype = "data:image/jpeg;base64,{0}";
string path = System.IO.Path.Combine(environment.WebRootPath, content[0], content[1]);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
var bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
stream.Close();
stream.Dispose();
var s = Convert.ToBase64String(bytes);
return string.Format(datatype, s);

测试例子(不是规范的测试写法):

[TestMethod]
public void IsExistsImgPath()
{
ImgPathViewModel imgPathView = new ImgPathViewModel(environment.Object);
imgPathView.ImgName = "20210702163812rbac0.png";
imgPathView.Path = "imagesBPM\\20210702163812rbac0.png";
Assert.IsNotNull(imgPathView.PathString);
}

上一篇:运行top,出现TERM environment variable not set.是什么意思?


下一篇:Android 扫描SD卡根目录的所有文件夹和音乐文件