标题之所以带上.net core,而不是.net就是由于两者在类库的使用以及部署环境有很大的差别,所以特此说明。
长话短说,直接开始!
1.新建一个.net core项目,版本是2.0,为了方便就建一个MVC模板项目
2.安装保存图片必须的类库,在NuGet里搜索System.Drawing.Common,然后点安装。值的说明一下,在.net里,操作是引用System.Drawing.dll,虽然core里也可以这么引用并且代码编译能通过,但是实际运行的时候是会抛异常的。所以还是老老实实在NuGet里安装吧。
3.接下来就是代码部分,我们写一个接收上传文件的方法,上传的原理是,将图片转成base64作为参数传递
接口方法如图:
/// <summary> /// 图片上传 /// </summary> /// <param name="id">标识,暂时没用</param> /// <param name="filename">图片名称,带后缀名</param> /// <param name="img">图片base64编码</param> /// <returns></returns> public IActionResult Upload(int id, string filename, string img) { string res = string.Empty; try { string filePath = _hostingEnvironment.WebRootPath + "/images/" + filename; //将Base64String转为图片并保存 byte[] arr2 = Convert.FromBase64String(img); using (MemoryStream ms2 = new MemoryStream(arr2)) { System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2); bmp2.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); } res = "http://static.lovemoqing.com" + "/images/" + filename; } catch (Exception ex) { res = ex.ToString(); } return Content(res); }