• .NET Core 文件的上传与下载


      1.前言

       文件导入导出是简单且常用的功能,以下示例实现了文件上传与下载的几种方法,如有不妥的地方,欢迎指正。小白一枚,在往目标前进。

       2.1.文件上传    --    纯文件

    1 <form action="/Home/Index" method ="post" enctype="multipart/form-data" > 
    2     <input type="file" multiple/>
    3     <input id="upload" type="submit" />
    4 </form>
     1    [HttpPost]
     2         public IActionResult Index(List<IFormFile> files)
     3         {
     4             5             foreach (var file in files)
     6             {
     7                 //获取文件名
     8                 var fileName = file.FileName;
     9                 //保存在wwwroot文件夹下
    10                 fileName = hostingEnv.WebRootPath + $"\{fileName}";12                 using (FileStream fs = System.IO.File.Create(fileName))
    13                 {
    14                     file.CopyTo(fs);
    15                     fs.Flush();
    16                 }
    17             }
    18             return View();
    19         }

      2.2.文件上传    --    多类型内容上传

    对于这种不只有文件的表单,可以采用模型绑定的方式。

     <form action="/Home/Index" method ="post" enctype="multipart/form-data" > 
    <input type="file" multiple/>
    <input type="text" name="Name"/>
    <input id="upload" type="submit" />
    </form>
            /// <summary>
            /// 表单上传文件
            /// </summary>
            /// <param name="files"></param>
            /// <returns></returns>
            [HttpPost]
            public IActionResult Index(FormObject obj)
            {
                foreach (var file in obj.Files)
                {
                    //获取文件名
                    var fileName = ContentDispositionHeaderValue
                                    .Parse(file.ContentDisposition)
                                    .FileName
                                    .Trim('"');
                    fileName = hostingEnv.WebRootPath + $"\{fileName}";
                    using (FileStream fs = System.IO.File.Create(fileName))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                    }
                }
                return View();
            }

    //模型类
    public class FormObject
    
    {
           public List<IFormFile> Files{ get; set; }
           public string Name { get; set; }
    }

           2.3.文件上传  -- Ajax上传

        <input type="text" name="Name" value="123"/>    
        <input type="file" id="fileUpload" name="fileUpload" multiple/>
        <input id="upload" type="button" value="ajax 提交"/>
    <script type="text/javascript">
        $(function () {
            $("#upload").click(function (evt) {
                ///取选择的文件加入FormData中
                var fileUpload = $("#fileUpload").get(0);
                var files = fileUpload.files;
                var data = new FormData();
                for (var i = 0; i < files.length; i++) {
                    data.append(files[i].name, files[i]);
                }
               // data.append("Name", $('input[name="Name"]').val())
                $.ajax({
                    type: "POST",
                    url: "http://192.168.0.175:8095/api/Organization",
                    contentType: false,
                    processData: false,
                    data: data,
                    success: function (message) {
                        alert(message);
                    },
                    error: function () {
                        alert("上传文件出现错误!");
                    }
                });
            });
        });
    </script>
            /// <summary>
            /// 通过ajax上传
            /// </summary>
            /// <returns></returns>
            public IActionResult UploadFiles()
            {var files = Request.Form.Files;
                var value =Request.Form.First(c => c.Key == "Name").Value;//获得表单文本项
                foreach (var file in files)
                {
                    var fileName = file.FileName;
                    fileName = hostingEnv.WebRootPath + $@"{fileName}";using (FileStream fs = System.IO.File.Create(fileName))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                    }
                }
                return RedirectToAction("/Export", new { Title ="1",Name = 123});
            }

          3.3.文件下载

     1        [HttpGet]
     2         public IActionResult ExportText()
     3         {
     4            
     5             string sFileName = $@"qmhuangtext{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt";
     6             FileStream fs =new FileStream(sFileName,FileMode.OpenOrCreate);
     7             StreamWriter sw = new StreamWriter(fs);
     8             sw.WriteLine("Hello world");
     9             sw.Flush();
    10             sw.Close();
    11             fs.Close();
    12             return File(new FileStream(sFileName, FileMode.Open), "application/octet-stream", $"导出测试{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt");
    13         }
  • 相关阅读:
    Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
    关于activity_main.xml与fragment_main.xml
    在MAC OS 下配置python + Flask ,并支持pyCharm编辑器
    openshift云计算平台diy模式安装Python2.7+Flask
    flask程序部署在openshift上的一些注意事项
    windows下python+flask环境配置详细图文教程
    SegmentFault 2014黑客马拉松 北京 作品demo
    Flask —— 使用Python和OpenShift进行即时Web开发
    支付宝的简单使用
    iOS- 详解文本属性Attributes
  • 原文地址:https://www.cnblogs.com/qmhuang/p/8306627.html
Copyright © 2020-2023  润新知