文件上传

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" />

前端代码

<%@ 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,.jpeg,.png" runat="server" />



            <asp:Button ID="Button1" runat="server" Text="保存" />

            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

            <br />
            <%--上传后图片显示--%>  
            <asp:Image ID="Image1" runat="server" />


        </div>
    </form>
</body>
</html>
<script type="text/javascript">

    document.getElementById("Button1").onclick = function () {
        var fl = document.getElementById('FileUpload1');
        if (fl.value.length <= 0) {
            document.getElementById('Label1').innerHTML = "请先选择要上传的文件!";
            return false;
        }
        else {
            if (fl.files[0].size > 1024 * 1024 * 4) {
                document.getElementById('Label1').innerHTML = "文件过大,不允许超过4MB大小!";
                return false;
            }
        }
    }



</script>
View Code

后端

 protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Click += Button1_Click;
    }




    void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4)
        {
            Label1.Text = "文件过大!";
            return;
        }
        //1、获取要上传的文件,并且知道要上传到服务器的路径
        string s = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;

        //2、上传
        string path = Server.MapPath(s);
        Label1.Text = path;
        FileUpload1.SaveAs(path);

        Image1.ImageUrl = s;

    }
View Code
原文地址:https://www.cnblogs.com/zhangwei99com/p/6940907.html