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#的文件上传和删除文件就这样完成了。

时间: 2024-10-24 17:52:01

C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)的相关文章

link环境下,制作一个《网盘软件》,使用codefirst技术,请问如何上传完后删除文件?

问题描述 link环境下,制作一个<网盘软件>,使用codefirst技术,请问如何上传完后删除文件? link环境下,制作一个<网盘软件>,使用codefirst技术,请问如何上传完后删除文件? 解决方案 除非部署activex在客户端,否则办不到.网页不能直接操作客户端的文件系统. 解决方案二: 纯web办不到,如果一定要实现这个功能,只有从架构上面调整,比如引入c/s架构,b/s.c/s混合架构. 另外activex属于淘汰的技术,而且主要支持ie浏览器(activex本身就

java-十万火急::Java判断服务器的文件是否存在如果不存在就上传、如果存在,在上传的时候删除文件

问题描述 十万火急::Java判断服务器的文件是否存在如果不存在就上传.如果存在,在上传的时候删除文件 我是新人没有悬赏.还希望大牛们 能帮帮我 Java判断服务器的文件是否存在如果不存在就上传.如果存在,在上传的时候删除文件完成文件上传. 解决方案 java判断文件夹是否存在并上传文件 解决方案二: 做个接口,出入文件名,判断是否存在,返回结果给你就行了

OSS JS上传带目录目录文件(帮助文档错误 -- 修复篇)

问题:多次在Filename里添加目录 ,无效 解决:尝试在KEY里添加目录,上传带有目录的文件成功

C#实现多文件上传,写到文件夹中,获取文件信息以及下载文件和删除文件

前台:.js //上传附件 function uploadAttachment() { if ($("#Tipbind").attr('checked')) { var ip = $("#TunBandIP").val(); if ($.trim(ip) == 0) { return $.messager.show({ title: '提示', msg: '请先选择IP' }); } $('#ImprotDlg').dialog('open'); uploadFy(

javascript-淘宝图片上传预览 删除 和恢复删除 js或jq代码 急用请务必帮忙 万分感谢

问题描述 淘宝图片上传预览 删除 和恢复删除 js或jq代码 急用请务必帮忙 万分感谢 本地上传图片的预览 会有删除 恢复删除 来回切换的功能 只要本地上传功能 就可以了 请大神帮帮忙 非常感谢 这是demo http://jsbin.com/yedutofafe/edit?html,output 解决方案 http://blog.sina.com.cn/s/blog_9c6c8ea90101crgo.html

js上传图片-js上传文件时各种浏览器判断文件大小不兼容。

问题描述 js上传文件时各种浏览器判断文件大小不兼容. 最近有一个需求,要上传一张图片到服务器,但是要求在页面上判断文件大小,而不是在后台判断,其他浏览器可以轻松做到,但是ie浏览器却没有办法做到,有哪位大神做过这种东西的,要求可以兼容几个主流浏览器,无论是使用js或者是jquery都可以,要实际做过的,拷贝过来的就别回复了,谢谢.

js 上传文件预览的简单实例_javascript技巧

1. FILE API html5提供了FIle和FileReader两个方法,可以读取文件信息并读取文件. 2. example <html> <body> <div id="test-image-preview" style="border: 1px solid rgb(204, 204, 204); width: 100%; height: 200px; background-size: contain; background-repeat

Struts1.x系列教程(9):上传任意多个文件

从<Struts1.x系列教程(8):上传单个文件>中给出的例子可以看出,在Struts1.x中上传单个文件是非常简单的,但在实际应用中,上传文件的个数一般是不确定的,如在网络硬盘中,用户可以根据自己的需要上传任意多个文件(当然,网络硬盘一次上传文件的数目一般也是有上限的,如50个,但用户可以只上传了3个文件,因此,在这种情况下,上传文件的个数也是不确定的).如果读者用过"网易网盘"或其他类似的服务程序,它们的上传文件功能基本上都是根据用户选择的文件多少来添加要上传的文件(

IE+JS: 上传之前检测图片文件大小October

 来源: http://www.ugia.cn/?p=73 不得不佩服此人的巧妙的思想,简单几句话搞定了! 文件上传之前的检测,通常是通过文件名来判断文件类型是否合法,但是要想检测文件的大小很难办到,除非在本地或者使用控件.不过在IE下img有几个附加的属性,如:fileCreatedDate.fileModifiedDate.fileSize.fileUpdatedDate.filters,我们可以通过这些属性来获取图片文件的部分信息,如文件大小,我们用file表单同img标签结合,就能够在上