zoukankan      html  css  js  c++  java
  • c# api+mvc实现上传和下载功能(转载)

    public class FileResult
        {
            public int Code { get; set; }
            public string Msg { get; set; }
            public string Url { get; set; }
        }

    //首先在api方法内新建一个控制器

    //控制器内写关于上传和下载的具体代码

    // 允许上传的文件扩展名
            public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png",".jpg" };
            public string UrlPath = "/Upload/";
    //下载
            [HttpGet]
            public void DownLoad(string Url)
            {
                string filePath = HttpContext.Current.Server.MapPath(Url);
                FileInfo fi = new FileInfo(filePath);
                if (File.Exists(filePath))
                {
                    HttpResponse response = HttpContext.Current.Response;
                    response.Clear();
                    response.ClearHeaders();
                    response.ClearContent();
                    response.Buffer = true;
                    response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fi.Name));
                    response.Charset = "GB2312";
                    response.ContentEncoding = Encoding.GetEncoding("GB2312");
                    response.ContentType = MimeMapping.GetMimeMapping(fi.Name);
                    response.WriteFile(filePath);
                    response.Flush();
                    response.Close();
                }
            }
    //上传
            [HttpPost]
            public FileResult UpLoad()
            {
                var request = HttpContext.Current.Request;
                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 new FileResult() { Code = 0, Msg = "上传成功", Url = urlfile };
                    }
                    else
                    {
                        return new FileResult() { Code = -1, Msg = "只允许上传指定格式文件"+string.Join(",",ExtentsfileName), Url = "" };
                    }
                }
                else
                {
                    return new FileResult() { Code = -1, Msg = "不能上传空文件", Url = "" };
                }
            }
        }

    //写完api方法之后写mvc前台

    <input type = "file" id="f1" />
    <input type = "button" value="aa" onclick="ff()"/>
    < script >
        function ff()
    {
        var formData = new FormData();
        var file = document.getElementById("f1").files[0];
        formData.append("fileInfo", file);
            $.ajax({
        url: "https://localhost:44370/api/FileOperation/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.Msg)
                    else
                    alert(data.Url)
                },
                error: function(data) {
                alert("上传失败!");
            }
        });
    }
    </script>

    <a href = "https://localhost:44370/api/FileOperation/DownLoad?Url=/FileUpload/132211303318715030.xls" > 下载 </ a >
  • 相关阅读:
    Pikachu-File Inclusion模块
    Pikachu-RCE模块
    Pikachu-CSRF模块
    Pikachu-暴力破解模块
    Pikachu-XSS模块与3个案例演示
    将Word文档发布至博客园随笔
    DVWA-全等级XSS(反射型、存储型)
    DVWA-sql注入(盲注)
    DVWA-全等级验证码Insecure CAPTCHA
    管理页面的 setTimeout & setInterval
  • 原文地址:https://www.cnblogs.com/mqcalive/p/13255117.html
Copyright © 2011-2022 走看看