查看: 95|回复: 0

asp.net core实现文件上传功能

[复制链接]

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-1-17 08:33:19 | 显示全部楼层 |阅读模式
上传文件在Web应用程序中是一个常见的功能。在http://asp.net core中上传文件并保存在服务器上,是很容易的。下面就来演示一下怎么样在 http://ASP.NET Core项目中进行文件上传。
整个文件将读入一个 IFormFile。IFormFile 是用于处理或保存文件的 C# 表示形式。
文件上传使用的磁盘和内存取决于并发文件上传的数量和大小。如果应用尝试缓冲过多上传,站点就会在内存或磁盘空间不足时崩溃。如果文件上传的大小或频率会消耗应用资源,请使用流式传输。
会将大于 64 KB 的所有单个缓冲文件从内存移到磁盘的临时文件。
用于较大请求的 ASPNETCORE_TEMP 临时文件将写入环境变量中命名的位置。如果未 ASPNETCORE_TEMP 定义,文件将写入当前用户的临时文件夹。
定义接口,使用FromForm接收数据
  /// <summary>        /// 添加反馈        /// </summary>        /// <param name="formData">文件</param>        /// <param name="UserID">用户id</param>        /// <param name="content">反馈内容</param>        /// <returns></returns>        [TypeFilter(typeof(AuthorizationFilterAttribute))]        [ApiResponseFilter]        [ApiExceptionFilter]        [HttpPost]        [Route("SaveUserfeedback")]        public bool SaveUserfeedback([FromForm] IFormFileCollection formData, [FromForm] uint UserID, [FromForm] string content)        {            SaveUserfeedback module = new SaveUserfeedback            {                UserID = UserID,                content = content            };            return _ICorrectiontypesBll.SaveUserfeedback(formData, module);        }
对上传的数据进行保存
  private string UploadFile(IFormFile formFile)        {            var currentDate = DateTime.Now;            string webRootPath = AppContext.BaseDirectory;            var filePath = $"/Template/UserfeedbackUploadFile/{currentDate:yyyyMMdd}/";            if (!Directory.Exists(webRootPath + filePath))            {                Directory.CreateDirectory(webRootPath + filePath);            }            var saveName = Guid.NewGuid().ToString();            saveName = saveName + ".jpg";            string filepath = webRootPath + filePath + saveName;            using (var fs = System.IO.File.Create(filepath))            {                formFile.CopyTo(fs);                fs.Flush();            }            return filePath + saveName;        }
技术群:添加小编微信并备注进群

小编微信:mm1552923
公众号:dotNet编程大全
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表