首页 > 编程语言 >c# 文件上传与下载

c# 文件上传与下载

时间:2023-12-07 14:14:42浏览次数:37  
标签:string c# Response file new 上传 public 下载

文件上传:

  API 上传的方法:

   //上传的文件格式
        public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png", ".jpg" };
        //路径
        public string UrlPath = "/Upload/";
        /// <summary>
        ///响应对象 ,使用前先赋值
        /// </summary>
        public HttpResponse Response = HttpContext.Current.Response;
        public HttpRequest Request = HttpContext.Current.Request;
        //上传文件
        [HttpPost]
        public FileResult UpLoad()
        {
            if (Request.Files.Count > 0)
            {
                string FileUrlResult = "";
                foreach (string fn in Request.Files)
                {
                    var file = Request.Files[fn];
                    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);

                    }
                    else
                    {
                        return new FileResult() { Code = -1, Msg = "只允许上传指定格式文件" + string.Join(",", ExtentsfileName), Url = "" };
                    }
                }
                return new FileResult() { Code = 0, Msg = "上传成功", Url = FileUrlResult };
            }
            else
            {
                return new FileResult() { Code = -1, Msg = "不能上传空文件", Url = "" };
            }
        }

  上传文件 客户端

 

使用 ajax 方法进行文件上传

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

 

MVC 上传文件的方法:

   public ActionResult File(HttpPostedFileBase file)
   {    
         //using System.IO;
         //上传路径
         string path = Server.MapPath("~/kuk");
         string filename = Path.Combine(path, file.FileName);
         file.SaveAs(filename);
         //上传成功 返回 ok
         return Content("ok");
    }

视图:

 

 

 

文件下载:

API 下载方法:

   /// <summary>
        /// 下载文件 使用过DEMO
        /// using System.IO;

        [HttpGet]
        public void DownLoad(string Url)
        {
               string filePath = HttpContext.Current.Server.MapPath(Url);
               FileInfo fi = new FileInfo(filePath);
               DownLoad(fi.Name, fi.FullName);
        }
        /// <param name="downFileName">下载后保存名</param>
        /// <param name="sourceFileName">服务器端物理路径</param> public void DownLoad(string downFileName, string sourceFileName) { if (File.Exists(sourceFileName)) { Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", downFileName)); Response.Charset = "GB2312"; Response.ContentEncoding = Encoding.GetEncoding("GB2312"); Response.ContentType = MimeMapping.GetMimeMapping(downFileName); Response.WriteFile(sourceFileName); Response.Flush(); Response.Close(); } }

客户端显示:

 

MVC 下载方法:

 // 要引用 using System.IO;
        public ActionResult FileDownload()
        {
            string path = Server.MapPath("/kuk/");
            FileStream fs = new FileStream(path, FileMode.Open);
            return File(fs, "image/gif", "a.jpg");   
        }

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/12/07/c-%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8e%e4%b8%8b%e8%bd%bd/

欢迎入群一起讨论

 

 

标签:string,c#,Response,file,new,上传,public,下载
From: https://www.cnblogs.com/songsu/p/17881852.html

相关文章

  • 网页在线安全浏览Office Word文档,只读打开/禁止编辑/禁止复制/禁止另存/禁止打印/禁止
    在企业OA系统或者在线协作办公场景中,有一些合同公文或者客户数据等重要文档需要我们在线共享给其他人,但是我们只希望其他人只能预览阅读文档,不能随便编辑修改文档,也禁止复制共享Word文档的内容到其他文档或者编辑器,不能将共享文件另存为本地文件夹,并且禁止用户打印该Word文档,那么......
  • JS(JavaScript)-函数(方法)
      1.介绍:JS中的函数是一种通过调用来完成具体业务的一段代码块。最核心的目的是将可重复执行的操作进行封装,然后供调用方无限制的调用。 基本作用: 方法(函数)是由事件驱动的或者当他被调用时被执行的可重复使用的代码块。Jav......
  • 实现多个 Launcher 并存切换
    实现这样一个功能,系统自带Launcher保留,用户可选择其他应用作为开机桌面(替代系统Launcher),并可以切回原来的桌面一、建立一个作为桌面的app首先看下Android自带Launcner的xml配置(Android13):/packages/apps/Launcher3/AndroidManifest.xml<!--43Mainlaunchera......
  • The second day learning summary
    1.什么是接口测试?接口测试是测试系统组件间接口的一种测试。接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。测试的重点是要检查数据的交换,传递和控制管理过程,以及系......
  • NC5X-NC6X-NCC开发常用数据表
    元数据相关表select*frommd_class;--元数据实体表select*from md_table;--元数据创建表的信息select*frommd_columnwheretableid='bd_rack';--元数据表的列信息select*frommd_component whereid='83cf74c7-2fa4-4e5f-a171-7aa3f2a44f54';--存放模块下的元数据......
  • 实验四 Web服务器1-socket编程
    基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.time服务器的客户端服务器,提交程序运行截图2.echo服务器的客户端服务器,提交程序运行截图,服务器把客户端传进来的内容加入“服务器进程pid你的学号姓名echo:”返回给客户端3.服务器部署到华为云服务器,客户端......
  • [ARC106E] Medals 题解
    题目链接题目链接题目解法感觉不难啊,怎么想到网络流和\(hall\)定理后面就屁都没想到呢首先一眼网络流先二分答案考虑一个朴素的建图方法是:把每个人拆成\(k\)个点,然后往在的天连边,跑最大流,满流即合法可以发现,跑网络流对这道题还说没有必要,因为只要判是否有完美匹配不难......
  • BOSHIDA DC电源模块在新能源产业中的应用前景
    BOSHIDADC电源模块在新能源产业中的应用前景随着新能源产业的不断发展,DC电源模块的应用前景越来越广泛。BOSHIDADC电源模块是一种具有稳定、高效、可靠的电源输出的电源模块,它能够将电源输入电压转换为可靠的直流电源输出,广泛应用于太阳能、风能、储能等新能源领域。下面就让我......
  • C++/CLI 包装引用 Native C++ 简单测试
    托管C++这个项目名:CppCLI。Animals.h#pragmaonceusingnamespaceSystem;namespaceZoological{publicrefclassAnimals{public:intGetLegs();voidSetLegs(intlegs);String^GetName();voidSetName(String^nam......
  • Spring的Bean工厂的后置处理器BeanFactoryPostProcessor执行流程
    BeanFactoryPostProcessor作用BeanFactoryPostProcessor是Spring框架中的一个重要接口,用于在BeanFactory加载Bean定义之后、实例化Bean之前对BeanFactory进行自定义修改和扩展。它允许开发人员在Spring容器加载配置文件并创建Bean实例之前对Bean定义进行操作,例如修改属性值、添加......