C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
之前做项目的时候要用到上传文件的功能,现在我总结一下,上传文件和删除文件的代码,在以后的使用的过程中也更方便查找。
[HttpPost] public ActionResult EditUser() { var userDal = new UserDal(); const string savePath = "/Images/Avatar/"; const string saveUrl = "/Images/Avatar/"; const string fileTypes = "gif,jpg,jpeg,png,bmp"; const int maxSize = 1000000; Hashtable hash; HttpPostedFile file = System.Web.HttpContext.Current.Request.Files["upload"]; var id = System.Web.HttpContext.Current.Request.Params["id"]; var posttitle = System.Web.HttpContext.Current.Request.Params["posttitle"]; if (file == null) { hash = new Hashtable(); hash["success"] = false; hash["msg"] = "请选择上传文件"; return Json(hash, "text/html;charset=UTF-8"); } string dirPath = System.Web.HttpContext.Current.Server.MapPath(savePath); if (!Directory.Exists(dirPath)) { hash = new Hashtable(); hash["success"] = false; hash["msg"] = "上传目录不存在"; return Json(hash, "text/html;charset=UTF-8"); } string fileName = file.FileName; string fileExt = Path.GetExtension(fileName).ToLower(); ArrayList fileTypeList = ArrayList.Adapter(fileTypes.Split(',')); if (file.InputStream == null || file.InputStream.Length > maxSize) { hash = new Hashtable(); hash["success"] = false; hash["msg"] = "上传文件大小超过限制"; return Json(hash, "text/html;charset=UTF-8"); } if (string.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1) { hash = new Hashtable(); hash["success"] = false; hash["msg"] = "上传文件扩展名是不允许的扩展名"; return Json(hash, "text/html;charset=UTF-8"); } string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; string filePath = dirPath + newFileName; file.SaveAs(filePath); string fileUrl = saveUrl + newFileName; hash = new Hashtable(); try { var user = userDal.GetByUser(id); var imgurl = user.Avatar; var pathall = _userimgpath + imgurl.Replace("/","\\"); if (System.IO.File.Exists(pathall)) { System.IO.File.Delete(pathall); } userDal.Update(new User() { Id = id, PostTitle = posttitle, Avatar = fileUrl }); hash["success"] = true; hash["msg"] = "上传成功"; return Json(hash, "text/html;charset=UTF-8"); } catch (Exception) { hash["success"] = false; hash["msg"] = "上传失败"; return Json(hash, "text/html;charset=UTF-8"); } }
总结一下:
将前台上传的文件通过System.Web.HttpContext.Current.Request.Files[]方法获取到然后根据已知的路径保存到文件夹中,如果已经存在了这个文件,就将它从文件夹中删除,最后将成功或失败的数据通过hashtable转换成json传递到前台,一个C#的文件上传和删除文件就这样完成了。
分类:
C#.NET
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2011-04-08 (转)列举ASP.NET 页面之间传递值的几种方式
2011-04-08 我的博客开通了