• 2017-5-27 WebForm 文件上传


    文件上传

    准备工作
      1.文件上传的页面
      2.上传文件要保存的文件夹

    1.只要将文件传上来就行
      //1、获取要上传的文件,并且知道要上传到服务器的路径
      string s = "Uploads/aaa.txt";
      //2、生成绝对路径
      string path = Server.MapPath(s);
      //3、上传
      FileUpload1.SaveAs(path);

    问题:文件类型保存不住,名字无法修改,覆盖已上传的文件
      优化1:保留文件原有的名字
      解决:把路径中的文件名替换为控件选中的文件名
      string s = "Uploads/" + FileUpload1.FileName;

    问题:文件名一样,会覆盖,造成文件丢失
      解决:文件名拼接时间和用户名
      string s = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + Request.Cookies["user"].Value + FileUpload1.FileName;

    问题:文件过大,但是还要上传
      解决:不是特别大可以更改请求最大长度,
      如果特别大:C#大文件断点续传
      扩容:在web.config中的<system.web>标记中
      <httpRuntime maxRequestLength="40960"/>

    解决:限制上传文件的大小
      服务端限制:
      if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4)
      {
        Label1.Text = "文件过大!";
        return;
      }

    客户端限制:
      fl.files[0].size > 1024 * 1024 * 4

    问题:限制上传文件的类型
    <asp:FileUpload ID="FileUpload1" accept=".jpg,.jpeg,.png" runat="server" />

    完整的文件上传代码:

    html页面代码和js页面段限制:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" accept=".jpg,.png,.jpeg,.avi" runat="server" />
            <asp:Button ID="Button1"  runat="server" Text="保存" />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </div>
        </form>
    </body>
    </html>
    <script type="text/javascript">
        
            var but = document.getElementById('Button1');
            but.onclick = function ()
            {
                var fu = document.getElementById('FileUpload1');
                if (fu.value.length <= 0) {
                    document.getElementById('Label1').innerText = "请先选择文件";
                    return false;
                }
                else
                {
                    if (fu.files[0].size > 1024 * 1024 * 4) {
                        document.getElementById('Label1').innerText = "文件过大,不能上传";
                        return false;
                    }
                    else {
                        document.getElementById('Label1').innerText = fu.files[0].size;
                    }
                }
            }
    
    </script>
    View Code

    后台端代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;
        }
    
        void Button1_Click(object sender, EventArgs e)
        {
            //限制文件上传的大小,不超过4mb
            if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4)
            {
                Label1.Text = "文件过大,不予上传";
            }
            Label1.Text = FileUpload1.PostedFile.ContentLength.ToString();
            //获取要上传的路径,并且知道要上传到服务器的路径  放置上传文件的时候文字重复 DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName
            string ss = "images/" + DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName ;
            //生成绝对路径
            string path = Server.MapPath(ss);
            //上传
            FileUpload1.SaveAs(path);
        }
    }
    View Code
  • 相关阅读:
    动态规划突破
    日志如何进行处理
    多线程相关问题
    Activity工作流框架
    修改模块
    spring多模块搭建Eureka服务器端
    springcould多模块搭建Eureka的服务器端口
    java操作elecsearch
    在elementui和MyBatis中前后端分离中使用shiro
    elementui的和前后端分离的微信登陆功能
  • 原文地址:https://www.cnblogs.com/qingnianxu/p/6911928.html
Copyright © 2020-2023  润新知