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#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)的更多相关文章
- git上传项目已经删除文件,但是Jenkins中没有删除
jenkins 缓存造成的,需要清理工作空间
- minio实现文件上传下载和删除功能
https://blog.csdn.net/tc979907461/article/details/106673570?utm_medium=distribute.pc_relevant_t0.non ...
- C#实现多文件上传,写到文件夹中,获取文件信息以及下载文件和删除文件
前台:.js //上传附件 function uploadAttachment() { if ($("#Tipbind").attr('checked')) { var ip = ...
- js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中
ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId ...
- js上传超大文件解决方案
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
- 使用ajaxfileupload.js上传文件
一直以来上传文件都是使用form表单上传文件,也看到过有人使用js上传文件,不过看起来蛮简单的也就没有怎么去理会.今天突然要使用这种方式上传文件,期间还遇到点问题.因此就记录下来,方便以后遇到这样的问 ...
- js 上传文件后缀名的判断 var flag=false;应用
js 上传文件后缀名的判断 var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...
- JS 上传文件 Uploadify 网址及 v3.2.1 参数说明
http://www.uploadify.com/ 一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonC ...
- atitit.javascript js 上传文件的本地预览
atitit.javascript js 上传文件的本地预览 1. .URL.createObjectURL 1 1.1. 吊销所有使用 URL.createObjectURL 而创建的 URL,以 ...
随机推荐
- MVC清除缓存设置+数据验证
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)] [Table("User")]:定义UserD ...
- 解析LRC歌词文件readlrc
package com.jikexueyuan.readlrc.main; import com.jikexueyuan.readlrc.utils.Utils; import java.io.Fil ...
- CSS之拖拽库2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- Javascript Error: 11233 Content-Length mismatch
Today I got a error in fiddler: Failed to obtain request body. System.IO.InvalidDataException The re ...
- inline-block元素的一些坑
当年刚知道CSS display有 inline-block 这个神奇的属性的时候,感觉碉堡了,以为从此不用float了,什么div.p,只要 display: inline-block 就在一行上了 ...
- 'WinMain' : function cannot be overloaded
Create a MFC Application (UNICODE), paste following code in one of your cpp file. int APIENTRY WinMa ...
- Git 技巧小结
本篇博客内的内容,主要摘抄自 廖雪峰的 Git教程,这篇教程写的通俗易懂,步步深入,是我见过最棒的Git教程了.下面的全部内容,摘抄自此教程,有需要的朋友,请看完整版. Git版本库 git在创建版本 ...
- Traveller项目介绍
Traveller,翻译为旅行家,是我用来实践最佳web技术的项目,主题是一个给旅行爱好者提供旅行信息的网站. 目标是组合现最流行的web技术,实现符合中国用户使用习惯的网站. 相关网址 Git:ht ...
- plupload 限制上传数量 只能选择一张图片上传
var files=[];var errors=[]; var chunk=<%=request.getParameter("chunk")%>; ...
- CSS样式display:none和visibility:hidden的区别
同样是隐藏,display:none与visibility:hidden有什么区别呢? 虽然display:none与visibility:hidden都能达到隐藏可见元素的作用(视觉上),但事实上, ...