.Net Core WebApi上传图片的两种方式
我这边主要是为了上传图片,话不多说,上代码。
方式一:通过Form表单上传
后端:
///
///上传图片,通过Form表单提交///
///
[Route("Upload/FormImg")]
[HttpPost]public ActionResult UploadImg(Listfiles)
{if (files.Count<1)
{return Error("文件为空");
}//返回的文件地址
List filenames = new List();var now =DateTime.Now;//文件存储路径
var filePath = string.Format("/Uploads/{0}/{1}/{2}/", now.ToString("yyyy"), now.ToString("yyyyMM"), now.ToString("yyyyMMdd"));//获取当前web目录
var webRootPath =_hostingEnvironment.WebRootPath;if (!Directory.Exists(webRootPath +filePath))
{
Directory.CreateDirectory(webRootPath+filePath);
}try{foreach (var item infiles)
{if (item != null)
{#region 图片文件的条件判断
//文件后缀
var fileExtension =Path.GetExtension(item.FileName);//判断后缀是否是图片
const string fileFilt = ".gif|.jpg|.jpeg|.png";if (fileExtension == null)
{break;//return Error("上传的文件没有后缀");
}if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1)
{break;//return Error("请上传jpg、png、gif格式的图片");
}//判断文件大小
long length =item.Length;if (length > 1024 * 1024 * 2) //2M
{break;//return Error("上传的文件不能大于2M");
}#endregion
var strDateTime = DateTime.Now.ToString("yyMMddhhmmssfff"); //取得时间字符串
var strRan = Convert.ToString(new Random().Next(100, 999)); //生成三位随机数
var saveName = strDateTime + strRan +fileExtension;//插入图片数据
using (FileStream fs = System.IO.File.Create(webRootPath + filePath +saveName))
{
item.CopyTo(fs);
fs.Flush();
}
filenames.Add(filePath+saveName);
}
}returnSuccess(filenames);
}catch(Exception ex)
{//这边增加日志,记录错误的原因//ex.ToString();
return Error("上传失败");
}
}
我这里主要是为了提交图片数据,所以有比较多的对图片文件的条件判断,这里可以根据需求,自行调整。包括文件的存储方式。
前端:
.Net Core WebApi图片上传