当前位置: 首页 > news >正文

.net 7 上传文件踩坑

(Name = “file”)
没加上这个传不进文件

		/// <summary>/// 上传单个文件/// </summary>/// <param name="formFile"></param>/// <returns></returns>[HttpPost("UploadFiles")][FunctionAttribute(MuType.Btn, "上传单个文件")]public async Task<JsonResult> UploadFiles([FromForm(Name = "file")] IFormFile formFile){var suffix = Path.GetExtension(formFile.FileName);var fileNmae = formFile.FileName;var filePaths = GetFileName(FileType.ProfilePhotoFileUpload, suffix);if (!Directory.Exists(Path.GetDirectoryName(filePaths.Item1))){Directory.CreateDirectory(Path.GetDirectoryName(filePaths.Item1));}try{using FileStream fileStream = System.IO.File.Create(filePaths.Item1);await formFile.CopyToAsync(fileStream);return await Task.FromResult(new JsonResult(new JsonResult(new ApiDataResult<string>(){Success = true,Message = "文件上传成功",Data = $"{filePaths.Item2}"  //返回的文件保存地址,用作保存数据库的})));}catch (Exception ex){return await Task.FromResult(new JsonResult(new JsonResult(new ApiDataResult<string>(){Message = "文件上传失败了"})));}}/// <summary>/// 统一文件命名  类型文件夹名/年月日/yyyyMMddHHmmss_guid.后缀/// </summary>/// <param name="fileType">存储文件夹的名字</param>/// <param name="suffix">文件后缀</param>/// <returns>第一个返回值(绝对路径),第二个返回值(相对路径)</returns>private static (string, string) GetFileName(FileType fileType, string suffix){string saveFilePath = $"{fileType.ToString()}\\{DateTime.Now.ToString("yyyyMMdd")}\\{DateTime.Now.ToString("yyyyMMddHHmmss")}_{Guid.NewGuid().ToString().ToUpper()}{suffix}";string allFilePaht = $"{Directory.GetCurrentDirectory()}\\{saveFilePath}";return (allFilePaht, saveFilePath);}

相关文章:

  • 苍穹外卖-01
  • Spring Boot进阶(89):Spring Boot和Zookeeper搭建分布式系统,提高系统可靠性
  • 注解配置SpringMVC
  • TypeScript - 枚举类型 -字符型枚举
  • DDOS版-超功能记事本 Ⅲ 8.8源码
  • Kafka-Java四:Spring配置Kafka消费者提交Offset的策略
  • Java架构师信息系统构建
  • 【图结构从入门到应用】图的表示和遍历,图搜索算法详解与示例
  • ubuntu 下的 使用anaconda 环境运行python 项目
  • [C++]——带你学习类和对象
  • C++入门精讲——入门看完这一篇就够了
  • Go学习第十五章——Gin参数绑定bind与验证器
  • c:变参函数:汇编解析;va_list;marco 宏:__VA_ARGS__
  • 数字孪生与智慧城市:开启未来智慧生活
  • 2023CCF中国开源大会 | 麒麟信安作为首批合作伙伴入驻全国信创开源广场
  • ----------
  • 【Leetcode】101. 对称二叉树
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【个人向】《HTTP图解》阅后小结
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • css系列之关于字体的事
  • MD5加密原理解析及OC版原理实现
  • Promise面试题,控制异步流程
  • Spring核心 Bean的高级装配
  • SwizzleMethod 黑魔法
  • 对象引论
  • 基于 Babel 的 npm 包最小化设置
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 使用权重正则化较少模型过拟合
  • 学习Vue.js的五个小例子
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 阿里云重庆大学大数据训练营落地分享
  • ​configparser --- 配置文件解析器​
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ###STL(标准模板库)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (HAL库版)freeRTOS移植STMF103
  • (第一天)包装对象、作用域、创建对象
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (转) 深度模型优化性能 调参
  • (转)【Hibernate总结系列】使用举例
  • .Net Redis的秒杀Dome和异步执行
  • .NET 设计一套高性能的弱事件机制
  • .NET中winform传递参数至Url并获得返回值或文件
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [C++]AVL树怎么转
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [JavaWeb玩耍日记]Maven的安装与使用
  • [LWC小知识] 标准lightning-input-field怎么取得变更值(onchange)
  • [Notes]python argparse模块
  • [one_demo_1]php中的文件锁
  • [PHP源码阅读]empty和isset函数
  • [Python从零到壹] 六十三.图像识别及经典案例篇之图像漫水填充分割应用
  • [SQL]mysql密码读取