• C#-WebForm-文件上传-FileUpload控件


    //<上传>按钮
        void Button1_Click(object sender, EventArgs e)
        {
            //判断是否选中文件
            if (FileUpload1.FileName.Length <= 0)
            {
                Label1.Text = "未选中任何文件!";
                return;
            }
            //<上传> 功能代码
            //------------------------------------------------------
            //新建文件夹Uploads,设置保存文件名和类型abc.txt
            string path = "Uploads/abc.txt";
            //映射绝对路径(Server.MapPath())
            string endpath = Server.MapPath(path);//映射绝对路径
            //展示上传保存文件夹绝对路径
            Label1.Text = endpath;
            //保存到服务器(SaveAs())
            FileUpload1.SaveAs(endpath);//保存到绝对路径
            //------------------------------------------------------
        }
    //<上传>按钮
        void Button1_Click(object sender, EventArgs e)
        {
            //判断是否选中文件
            if (FileUpload1.FileName.Length <= 0)
            {
                Label1.Text = "未选中任何文件!";
                return;
            }
            //<上传> 功能代码
            //------------------------------------------------------
            //新建文件夹Uploads,设置保存文件名和类型abc.txt
            string path = "Uploads/abc.txt";
            //映射绝对路径(Server.MapPath())
            string endpath = Server.MapPath(path);//映射绝对路径
            //展示上传保存文件夹绝对路径
            Label1.Text = endpath;
            //保存到服务器(SaveAs())
            FileUpload1.SaveAs(endpath);//保存到绝对路径
            //------------------------------------------------------
        }
    复制代码

    1、如何判断是否选中文件?
    FileUpload.FileName - 
    选中文件的文件名,如果长度不大于0,那么说明没选中任何文件
    js - f.value.length

    2、如何保存到服务器上?
    FileUpload.SaveAs("绝对路径");

    3、如何获得绝对路径?(李献策lxc)
    先编写相对路径 - "UpLoads/abc.txt"
    将相对路径映射成绝对路径 - Server.MapPath("UpLoads/abc.txt");

    -----------------------------------------------------------------------------

    在上述方法中,只能上传.txt文件,并且名字只能是abc。如何保留原有的名字和文件类型?

    //新建文件夹Uploads,设置保存文件名 + 选择的文件名
            string path = "Uploads/"+FileUpload1.FileName;

    相同的文件会被覆盖。如何保持文件的单一性不被覆盖?

    文件名前+登录用户名+当前时间(精确到毫秒)

    //新建文件夹Uploads,设置保存文件名
            string path = "Uploads/" + Request.Cookies["username"].Value + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;

    -----------------------------------------------------------------------------

    4、现在只能上传成为txt文件,并且名字只能是abc
    如何保留文件原有的名字和文件类型?
    "UpLoads/" + FileUpload1.FileName;

    5、如何防止重名覆盖的问题?
    "UpLoads/" + Request.Cookies["user"].Value + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;

    -----------------------------------------------------------------------------

    如何限制选中文件的类型?(李献策lxc)

      前端 FileUpload 选择文件时显示的类型:

    <asp:FileUpload ID="FileUpload1" runat="server" accept=".jpg,.png,.jpeg,.txt" />

      用户可以公共选择“所有文件”来选择其他类型的文件,如何限制?

    JS代码:

    <script type="text/javascript">
        //<上传>按钮点击事件(JS优先级最高)
        document.getElementById("Button1").onclick = function () {
            //获取选中的文件名
            var filename = document.getElementById("FileUpload1").value;
            //截取文件名后4位或5位
            var n = filename.substr(filename.length - 4, 4);
            var m = filename.substr(filename.length - 5, 5);
            //判断 n 或 m 不满足条件则终止执行,否则继续
            if (n !== ".txt" && n !== ".jpg" && n !== ".png" && m !== ".jpeg")
            {
                alert("请选择正确的文件格式!");
                return false;
            }
        };
    </script>
    复制代码
    <script type="text/javascript">
        //<上传>按钮点击事件(JS优先级最高)
        document.getElementById("Button1").onclick = function () {
            //获取选中的文件名
            var filename = document.getElementById("FileUpload1").value;
            //截取文件名后4位或5位
            var n = filename.substr(filename.length - 4, 4);
            var m = filename.substr(filename.length - 5, 5);
            //判断 n 或 m 不满足条件则终止执行,否则继续
            if (n !== ".txt" && n !== ".jpg" && n !== ".png" && m !== ".jpeg")
            {
                alert("请选择正确的文件格式!");
                return false;
            }
        };
    </script>
    复制代码

    -----------------------------------------------------------------------------

    6、如何限制选中文件的类型?
    限制普通人,给控件添加属性 - accept=".jpg,.png,.jpeg,.txt"
    限制找事的:
    document.getElementById("Button1").onclick = function () {
    var fileName = document.getElementById("FileUpload1").value;

    var name = fileName.substr(fileName.length - 4, 4);
    var name1 = fileName.substr(fileName.length - 5, 5);
    if (name != ".jpg" && name != ".png" && name != ".txt" && name1 != ".jpeg")
    {
    alert("请选择正确的文件!你要找事儿啊??");(李献策lxc)
    return false;

    };

    -----------------------------------------------------------------------------

    系统默认最大上传大小是4M,如果文件过大则无法上传

    如何限制上传文件的大小?扩容 或 限制大小(李献策lxc)

    扩容:

      webconfig配置文件中:

    复制代码
    <configuration>
      <system.web>
        <compilation debug="false" targetFramework="4.0" />
        <!--设置最大上传文件大小40M,单位KB-->
        <httpRuntime maxRequestLength="40960" />
      </system.web>
    </configuration>
    复制代码

    注意!不要扩的太多,否则多人同时上传大文件会造成服务器内存不足!

    限制大小:

      C#端限制:

    //<上传>按钮
        void Button1_Click(object sender, EventArgs e)
        {
            //判断是否选中文件
            if (FileUpload1.FileName.Length <= 0)
            {
                Label1.Text = "未选中任何文件!";
                return;
            }
    
            //判断选中文件的长度大小是否大于4M(默认单位为B)
            if (FileUpload1.PostedFile.ContentLength > 4 * 1024 * 1024)
            {
                Label1.Text = "文件长度过长!!";
                return;
            }
    
            //<上传> 功能代码
            //------------------------------------------------------
            //新建文件夹Uploads,设置保存文件名
            string path = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;
            //映射绝对路径(Server.MapPath())
            string endpath = Server.MapPath(path);//映射绝对路径
            //展示上传保存文件夹绝对路径
            Label1.Text = endpath;
            //保存到服务器(SaveAs())
            FileUpload1.SaveAs(endpath);//保存到绝对路径
            //------------------------------------------------------
        }
    复制代码
    //<上传>按钮
        void Button1_Click(object sender, EventArgs e)
        {
            //判断是否选中文件
            if (FileUpload1.FileName.Length <= 0)
            {
                Label1.Text = "未选中任何文件!";
                return;
            }
    
            //判断选中文件的长度大小是否大于4M(默认单位为B)
            if (FileUpload1.PostedFile.ContentLength > 4 * 1024 * 1024)
            {
                Label1.Text = "文件长度过长!!";
                return;
            }
    
            //<上传> 功能代码
            //------------------------------------------------------
            //新建文件夹Uploads,设置保存文件名
            string path = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;
            //映射绝对路径(Server.MapPath())
            string endpath = Server.MapPath(path);//映射绝对路径
            //展示上传保存文件夹绝对路径
            Label1.Text = endpath;
            //保存到服务器(SaveAs())
            FileUpload1.SaveAs(endpath);//保存到绝对路径
            //------------------------------------------------------
        }
    复制代码

      缺点:<上传>点击后,系统是先提交给后台,然后再进行判断,提交给后台速度受影响

      JS端限制:

    <script type="text/javascript">
        //<上传>按钮点击事件(JS优先级最高)
        document.getElementById("Button1").onclick = function () {
            //判断要上传的文件的长度大小
            var f = document.getElementById("FileUpload1");
            if (f.files[0].size > 4 * 1024 * 1024)
            {
                Label1.Text = alert("文件长度过长!!");
                return;
            }
    
            //获取选中的文件名
            var filename = document.getElementById("FileUpload1").value;
            //截取文件名后4位或5位
            var n = filename.substr(filename.length - 4, 4);
            var m = filename.substr(filename.length - 5, 5);
            //判断 n 或 m 不满足条件则终止执行,否则继续
            if (n !== ".txt" && n !== ".jpg" && n !== ".png" && m !== ".jpeg")
            {
                alert("请选择正确的文件格式!");
                return false;
            }
        };
    </script>
    复制代码
    <script type="text/javascript">
        //<上传>按钮点击事件(JS优先级最高)
        document.getElementById("Button1").onclick = function () {
            //判断要上传的文件的长度大小
            var f = document.getElementById("FileUpload1");
            if (f.files[0].size > 4 * 1024 * 1024)
            {
                Label1.Text = alert("文件长度过长!!");
                return;
            }
    
            //获取选中的文件名
            var filename = document.getElementById("FileUpload1").value;
            //截取文件名后4位或5位
            var n = filename.substr(filename.length - 4, 4);
            var m = filename.substr(filename.length - 5, 5);
            //判断 n 或 m 不满足条件则终止执行,否则继续
            if (n !== ".txt" && n !== ".jpg" && n !== ".png" && m !== ".jpeg")
            {
                alert("请选择正确的文件格式!");
                return false;
            }
        };
    </script>
    复制代码

      优势:先进行判断再提交上传,不占用上传内存。

      注意:C#端与JS端都要写,为防止绕过JS端直接上传

    -----------------------------------------------------------------------------

    7、控制上传文件的大小
    扩容 - 系统默认允许最大上传长度是4MB
    webconfig配置文件中写入
    <system.web>
    <compilation debug="false" targetFramework="4.0" />
    <httpRuntime maxRequestLength="40000" />
    </system.web>

    百度搜,研究,C#大文件上传,断点续传。

    注意!不要扩的太多,否则多人同时上传大文件会造成服务器内存不足!

    限制大小
    C#端限制:
    if (FileUpload1.PostedFile.ContentLength>(4*1024*1024))
    {
    Label1.Text = "文件长度过长!!!";
    return;
    }

    JS端限制:
    var f = document.getElementById("FileUpload1");

    if (f.files[0].size > (4 * 1024 * 1024)) {
    alert("文件过大!!!");
    return false;
    }

  • 相关阅读:
    设计模式-适配器模式
    设计模式-模板方法模式
    设计模式-策略模式
    spring-消息
    spring-集成redis
    spring-mvc高级技术
    spring-AOP
    restful规范
    十一,装饰器详解
    十,函数对象,嵌套,名称空间与作用域,闭包函数
  • 原文地址:https://www.cnblogs.com/baimangguo/p/6391117.html
Copyright © 2020-2023  润新知