ASP.NETCore上传文件图片上传

  • 格式:pdf
  • 大小:64.39 KB
  • 文档页数:6

ASP.NETCore上传⽂件图⽚上传

在 ASP.NET Core 中上传⽂件

vs2019 选择⽂件后,调试停⽌问题

⼯具 -> 选项 -> 项⽬和解决⽅案 -> Web项⽬ -> 浏览器窗⼝关闭时停⽌调试器(s) 复选√ 去掉

1、单个⽂件

IFormFile

2、多个⽂件的集合:

IFormFileCollection

IEnumerable

成员列表

3、Postman请求

ASP.NET Core Controller ⽂件

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Http;

using Microsoft.AspNetCore.Mvc;

namespace WebApplication.Controllers

{

public class TestController : Controller

{

public IActionResult Index()

{

return View();

}

///

/// from表单submit提交上传,通过IFormFile参数获取上传⽂件信息【OK】

/// el-upload【获取不到参数】

///

///

///

[HttpPost("upload_avatar")]

public async Task UploadAvatar([FromForm] List files)

{

long size = files.Sum(f => f.Length);

if (files.Count < 1)

return Ok(new { code = -1, msg = "没有上传⽂件", data = "" });

//当前程序路径

var path = Directory.GetCurrentDirectory();

foreach (var formFile in files)

{

if (formFile != null && formFile.Length > 0)

{

var filePath = Path.GetTempFileName();

var filePath1 = Path.Combine("", Path.GetRandomFileName());

#region 图⽚⽂件的条件判断

//没有后缀扩展名的⽂件名

var currentPictureWithoutExtension = Path.GetFileNameWithoutExtension(formFile.FileName);//⽂件后缀

var fileExtension = Path.GetExtension(formFile.FileName).ToUpper();

//判断后缀是否是图⽚

const string fileFilt = ".gif|.jpg|.jpeg|.png";

if (fileExtension == null)

return new JsonResult(new { code = "-1", msg = "上传的⽂件没有后缀" });

if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1)

return new JsonResult(new { code = "-1", msg = "请上传jpg、png、gif格式的图⽚" });

//判断⽂件⼤⼩

long length = formFile.Length;

if (length > 1024 * 1024 * 2) //2M

return new JsonResult(new { code = "-1", msg = "上传的⽂件不能⼤于2M" });

#endregion

#region 上传图⽚

using (var stream = System.IO.File.Create(filePath))

{

await formFile.CopyToAsync(stream);

}

#endregion

}

}

//return Ok();

return Ok(new { count = files.Count, size });

}

///

/// from表单submit提交上传,通过IFormCollection参数获取上传⽂件信息【OK】

/// el-upload【OK】

///

///

///

[HttpPost("up_avatar")]

public async Task UpAvatar([FromForm] IFormCollection formCollection)

{

var fileFolder = Path.Combine("", "wwwroot/upload");

//定义图⽚数组后缀格式

string[] LimitPictureType = { ".JPG", ".JPEG", ".GIF", ".PNG", ".BMP" };

FormFileCollection fileCollection = (FormFileCollection)formCollection.Files;

foreach (IFormFile file in fileCollection)

{

//获取图⽚后缀是否存在数组中

string currentPictureExtension = Path.GetExtension(file.FileName).ToUpper();

if (LimitPictureType.Contains(currentPictureExtension))

{

var fileName = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}{Path.GetExtension(file.FileName)}";

var filePath = Path.Combine(fileFolder, fileName);

using (var stream = new FileStream(filePath, FileMode.Create))

{

await file.CopyToAsync(stream);

}

}

else

{

//return Json(new { status = -2, message = "请上传指定格式的图⽚", data = hash });

}

}

return Ok();

}

/// /// from表单submit提交上传,通过IFormFileCollection参数获取上传⽂件信息【OK】

/// el-upload【获取不到参数】

///

///

///

[HttpPost("batch_upload_avatar")]

public async Task BatchUploadAvatar([FromForm] IFormFileCollection files)

{

long size = files.Sum(f => f.Length);

var fileFolder = Path.Combine("", "wwwroot/upload");

if (!Directory.Exists(fileFolder))

Directory.CreateDirectory(fileFolder);

if (files.Count > 0)

{

foreach (IFormFile file in files)

{

var fileName = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}{Path.GetExtension(file.FileName)}";

var filePath = Path.Combine(fileFolder, fileName);

using (var stream = new FileStream(filePath, FileMode.Create))

{

await file.CopyToAsync(stream);

}

}

}

return Ok();

}

///

/// AJAX请求上传,通过Request.Form.Files获取上传⽂件信息【OK】

/// el-upload【OK】

///

///

///

[HttpPost("single_upload_avatar")]

public async Task SingleUploadAvatar()

{

#region 单个⽂件上传

var file = Request.Form.Files[0];

string fileName = string.Empty;

//using (FileStream fs = System.IO.File.Create(fileName))

//{

// file.CopyTo(fs);

// fs.Flush();

//}

#endregion

#region 批量上传

var files = Request.Form.Files;

string filePhysicalPath = string.Empty;

foreach (var itemFile in files)

{

if (file.Length > 0)

{

var fName = System.Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);//⽂件名+⽂件后缀名

using (var stream = new FileStream(filePhysicalPath + fileName, FileMode.Create))

{

await file.CopyToAsync(stream);

}

}

}

#endregion

return Ok();

}