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();
}