.NET Core Base64上传图片
电脑版发表于:2020/4/10 16:06
通用的图片上传工具类,直接上代码吧
图片转Base64可以看看剑哥
借鉴了剑哥的一些思路 https://www.tnblog.net/aojiancc2/article/details/2622
/// <summary>
/// 将base64转成图片
/// </summary>
/// <param name="Strbase64">base64数据</param>
/// <param name="Fileurl">文件存放路径存(/UploadFiles/模块)</param>
/// <param name="FileSuffix">图片后缀(不存在则取base64类型后缀,如果base64头部不存在data:image/jpg(类型)返回空)</param>
/// <param name="Bol">是否默认盘(Fileurl否必填盘)</param>
/// <param name="GuridFileName">图片名称(默认GUID生成)</param>
/// <returns></returns>
/// D:\Code\WebManagers\Web\Ayhl\API\VideoManageApi\UploadFiles\
public static string SaveImage(string Strbase64, string Fileurl, string FileSuffix, bool Bol = false, string GuridFileName = "")
{
try
{
if (GuridFileName == null || string.IsNullOrEmpty(GuridFileName))
{
//使用GUID创建文件名称
GuridFileName = Guid.NewGuid().ToString().Replace("-", "");
//防止Guid重复加上时间秒
GuridFileName += DateTime.Now.Second;
}
//时间生成每日文件夹
string FileName = DateTime.Now.ToString("yyyy-MM-dd");
if (FileSuffix == null || string.IsNullOrEmpty(FileSuffix))
{
if (Strbase64 != null && !string.IsNullOrEmpty(Strbase64))
{
var bte = Strbase64.Split("base64");
if (bte.Length > 1)
{
try
{
FileSuffix = bte[0].Split('/')[1].Replace(";", "");
}
catch (Exception ex)
{
return "";
}
}
else
{
return "";
}
}
else
{
return "";
}
}
//if (Fileurl == null || string.IsNullOrEmpty(Fileurl))
//{
// Fileurl = $"//UploadFiles//VideoImages//{FileName}//{GuridFileName}.{FileSuffix}";
//}
if (Fileurl != null && !string.IsNullOrEmpty(Fileurl))
{
if (Fileurl.Split('.').Length < 2)
{
Fileurl += "//" + FileName + "//" + GuridFileName + "." + FileSuffix;
}
}
string path = "";
//是默认工作盘
if (Bol)
{
//获取应用程序的当前工作目录。 Directory.GetCurrentDirectory()
path = Directory.GetCurrentDirectory() + Fileurl;
}
//返回指定路径字符串的目录信息。Path.GetDirectoryName
string filepath = Path.GetDirectoryName(path);
// 如果不存在就创建file文件夹
if (!Directory.Exists(filepath))
{
if (filepath != null) Directory.CreateDirectory(filepath);
}
//使用正则表达式把所有类型的图片去掉前缀
string base64img = Regex.Replace(Strbase64, "data:image/.*;base64,", "");
byte[] photoBytes = Convert.FromBase64String(base64img);
//创建一个新文件,将指定的字节数组写入该文件,然后关闭文件。如果目标文件已存在,则将覆盖它。
File.WriteAllBytes(path, photoBytes);
return Fileurl;
}
catch (Exception ex)
{
return "";
}
}
有疑问留言哦