.net core Webapi 文件上传
.net core Webapi 文件上传
最近在做微信小程序上传文件的过程中,遇到的一些坑给大家整理下。
下面直接给大家看个小demo
微信小程序前端上传请求
wx.chooseImage({
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
let url = app.GET_API_URL("Report", "SubmitEquipment");
wx.uploadFile({
url: url, //仅为示例,非真实的接口地址
filePath: res.tempFilePaths[0],
name: 'file',
formData: {
'processName': 'A03004',
'incident': '0',
},
success(res) {
}
})
}
})
后端Webapi请求
在这里大家要注意的是,这里写的是.net core文件操作,由于个人原因,将
asp.net
和.net core
弄混淆了,导致在这一块浪费了很多时间,在这里,给大家些两个方案,asp.net 和.net core
他们主要的区别在于:
1.asp.net 大部分都是使用的:
HttpFileCollection
和HttpContext.Current.Request.Files
2..net core 使用的是IFormFile
或IFormFileCollection
方便简单
后端Webapi请求(asp.net方式)
[HttpPost]
public string PostFiles()
{
string result = "";
HttpFileCollection filelist = HttpContext.Current.Request.Files;
if (filelist != null && filelist.Count > 0)
{
for (int i = 0; i < filelist.Count; i++)
{
HttpPostedFile file = filelist[i];
String Tpath = "/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
string filename = file.FileName;
string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff");
string FilePath = 保存路径 + "\\" + Tpath + "\\";
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists) { di.Create(); }
try
{
file.SaveAs(FilePath + FileName);
result.obj = (Tpath + FileName).Replace("\\", "/");
}
catch (Exception ex)
{
result = "上传文件写入失败:" + ex.Message;
}
}
}
else
{
result = "上传的文件信息不存在!";
}
return result;
}
后端Webapi请求(.net core方式)
/// <summary>
/// 上传图片
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult<bool> UploadFile(IFormFile file)
{
string json = string.Empty;
if (file != null)
{
try
{
// 文件后缀
var fileExtension = Path.GetExtension(file.FileName);
// 判断后缀是否是图片
const string fileFilt = ".gif|.jpg|.jpeg|.png";
if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1)
{
//myds.Message = "请上传jpg、png、gif格式的图片";
}
var strDateTime = DateTime.Now.ToString("yyMMddhhmmssfff"); //取得时间字符串
var strRan = Convert.ToString(new Random().Next(100, 999)); //生成三位随机数
var saveName = strDateTime + strRan + fileExtension;//
//保存文件
string path = ConfigurationManager.AppSettings["RootPortalPath"];
string dir = path + "/File/" + DateTime.Now.ToString("yyyy/MM/dd");
string filePath = dir + "/" + saveName;
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
// 保存文件到服务器
using (FileStream fs = System.IO.File.Create(filePath))
{
file.CopyTo(fs);
fs.Flush();
}
}
catch (Exception ex)
{
//这边增加日志,记录错误的原因
//ex.ToString();
}
}
return ActionResultUtil.JsonText(json);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)