• .Net 上传文件和下载文件


    一、上传文件

      1、普通的form表单提交

      注意点:

    1. 请求方式必须为Post。
    2. form表单里必须设置enctype属性(enctype = "multipart/form-data")

    下面的代码是实现Demo:  

    <div class="row">
        @using(Html.BeginForm("Export", "Home", FormMethod.Post, new { @class = "form-horzoontal", @enctype = "multipart/form-data" }))
        {
            <div class="form-group">
                <label class="label-control">请选择文件</label>
                <div class="col-md-4">
                    @Html.TextBox("File","", new { @type="file",@class="form-ontrol"})
                </div>
            </div>
            <div class="form-group">
                <div class="clearfix">
                    <button type="submit" class="btn btn-primary">
                        <i class="icon-ok"></i>提交
                    </button>
                    <button type="reset" class="btn btn-danger">
                        <i class="icon-undo"></i>重置
                    </button>
                </div>
            </div>
        }
    </div> 
    View Code
    /// <summary>
            /// 提交文件
            /// </summary>
            [HttpPost]
            public void Export(HttpPostedFileBase File)
            {
                //HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
                //HttpPostedFile file = files[0];
                //拓展名
                string Extension = System.IO.Path.GetExtension(File.FileName);
                //文件名
                string FileName = DateTime.Now.ToFileTime() + Extension;
                //文件存放路径
                string Path = Server.MapPath("~/upload/");
                //如果文件路径不存在 
                if (!System.IO.Directory.Exists(Path))
                {
                    System.IO.Directory.CreateDirectory(Path);
                }
    
                File.SaveAs(Path + "//" + FileName);
            }
    View Code

      2、Ajax表单提交 

      注意点:

    1. 导入jquery.unobtrusive-ajax.min.jsjquery.form.js两个引用。
    2. 提交的时候必须用 $("#form").ajaxSubmit()的提交方式。否则接收不到文件流。 

      下面的代码是实现Demo:

    <div class="row">
        @using(Ajax.BeginForm("Export", "Home", null,new AjaxOptions { HttpMethod="Post"}, new {@id="form", @class = "form-horzoontal", @enctype = "multipart/form-data" }))
        {
            <div class="form-group">
                <label class="label-control">请选择文件</label>
                <div class="col-md-4">
                    @Html.TextBox("File","", new { @type="file",@class="form-ontrol"})
                </div>
            </div>
            <div class="form-group">
                <div class="clearfix">
                    <button type="button" class="btn btn-primary" onclick="sub()">
                        <i class="icon-ok"></i>提交
                    </button>
                    <button type="reset" class="btn btn-danger">
                        <i class="icon-undo"></i>重置
                    </button>
                </div>
            </div>
        }
    </div> 
    @section Scripts{
    <script src="~/Scripts/jquery-1.8.2.min.js"></script> 
    <script src="~/Scripts/jquery.form.js"></script> 
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    <script>
        //ajax提交表单
        function sub() {
            $("#form").ajaxSubmit();  
        }
    </script>
    }
    View Code
    /// <summary>
            /// 提交文件
            /// </summary>
            [HttpPost]
            public void Export(HttpPostedFileBase File)
            {
                //HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
                //HttpPostedFile file = files[0];
                //拓展名
                string Extension = System.IO.Path.GetExtension(File.FileName);
                //文件名
                string FileName = DateTime.Now.ToFileTime() + Extension;
                //文件存放路径
                string Path = Server.MapPath("~/upload/");
                //如果文件路径不存在 
                if (!System.IO.Directory.Exists(Path))
                {
                    System.IO.Directory.CreateDirectory(Path);
                }
    
                File.SaveAs(Path + "//" + FileName);
            }
    View Code

     二、下载文件

      下面是两种实现方式

      1、

    /// <summary>
            /// 下载文件
            /// </summary>
            public void DownloadFile()
            {
                //获取respone对象
                HttpResponse respone = System.Web.HttpContext.Current.Response;
                //文件绝对路径
                string Path = Server.MapPath("~/upload/131348099436645924.JPG");
                string fileName = System.IO.Path.GetFileName(Path);
                System.IO.FileInfo file = new FileInfo(Path); 
                Response.AddHeader("Content-Disposition", "attachment;filename="" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + """);
                Response.AddHeader("Content-Length", file.Length.ToString()); 
                //响应类型
                Response.ContentType = "application/octet-stream";
                Response.WriteFile(Path);
                Response.Flush();
                Response.End();
            }
    View Code

      2、

    /// <summary>
            /// 下载文件
            /// </summary>
            public FileResult DownloadFile()
            { 
                //文件绝对路径
                string Path = Server.MapPath("~/upload/131348099436645924.JPG");
                string fileName = System.IO.Path.GetFileName(Path);
                return File(Path, "application/octet-stream",fileName);
            }
    View Code
  • 相关阅读:
    232 前端之JQuery:JQuery扩展和事件
    231 前端之JQuery:JQuery文档操作
    Result(ActionResult、JsonResult、JavaScriptResult等)
    Controller传值到前端页面的几种方式
    若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet(转载)
    过滤器
    ViewData丶ViewBag和TempData
    C#-绘图双缓冲
    Kafka的架构原理,你真的理解吗?
    Kafka的架构原理,你真的理解吗?
  • 原文地址:https://www.cnblogs.com/wwj1992/p/6611748.html
Copyright © 2020-2023  润新知