• MVC AJAX方法 文件上传下载


    前端页面

    <input type="file" id="f1" />
    <input type="button" value="上传文件" onclick="ff()" />
    
    <a href="~/Default/download">下载文件</a>
    <a href="~/Default/GetFileFromDisk">Click to get file</a>
    
    <script>
        function ff() {
            var formData = new FormData();
            var file = document.getElementById("f1").files[0];
            formData.append("fileInfo", file);
            $.ajax({
                url: "/Default/UpLoad/",
                type: "POST",
                data: formData,
                contentType: false,//必须false才会自动加上正确的Content-Type
                processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
                success: function (data) {
                    //if (data.Code < 0)
                        alert(data)
                    //else
                },
                error: function (data) {
                    alert("上传失败!");
                }
            });
        }
    </script>
    

    控制器方法

    namespace WebApplication1.Controllers
    {
        public class DefaultController : Controller
        {
            APIFileHelp help = new APIFileHelp();
            // GET: Default
            public ActionResult Index()
            {
                return View();
            }
            [HttpPost]
            public string UpLoad()
            {
                return help.UpLoad();
            }
            public FilePathResult GetFileFromDisk()
            {
                string path = AppDomain.CurrentDomain.BaseDirectory + "Upload/";
                string fileName = "新建文本文档.txt";
                return File(path + fileName, "text/plain", "test.txt");
            }
        }
    }
    

    文件帮助类

    namespace WebApplication1.Models
    {
        public class APIFileHelp
        {
            public string[] ExtentsfileName = new string[] { ".doc",".txt", ".xls", ".png", ".jpg" };
            public string UrlPath = "/Upload/";
            /// <summary>
            ///响应对象 ,使用前先赋值
            /// </summary>
            public HttpResponse Response = HttpContext.Current.Response;
            public HttpRequest Request = HttpContext.Current.Request;
    
            public string zhi { get; set; }
            public string UpLoad()
            {
                if (Request.Files.Count > 0)
                {
                    var file = Request.Files[0];
                    var extenfilename = Path.GetExtension(file.FileName);
                    //判断 路径是否存在
                    string path = HttpContext.Current.Server.MapPath(UrlPath);
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
    
                    if (ExtentsfileName.Contains(extenfilename.ToLower()))
                    {
                        string urlfile = UrlPath + DateTime.Now.ToFileTime() + extenfilename;
                        string filepath = HttpContext.Current.Server.MapPath(urlfile);
                        file.SaveAs(filepath);
                        return zhi=urlfile;
                    }
                    else
                    {
                        return zhi = "上传失败";
                    }
                }
                else
                {
                    return zhi = "上传失败";
                }
            }
        }
    }
    

      

  • 相关阅读:
    关于树状数组区间最值
    Gym 100500B
    RQNOJ Bus
    关于加权的LIS问题
    vs tip1
    小常识
    我的魔方主力
    killer驱动
    从日升的mecha anime看mecha genre的衰退
    关于供给移动端的视频压制
  • 原文地址:https://www.cnblogs.com/lls-995/p/13361329.html
Copyright © 2020-2023  润新知