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

2021-03-31 17:28

阅读:648

标签:cep   stl   选中   研究   直接   cookie   asc   登录   nbsp   

//按钮
    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 选择文件时显示的类型:

"FileUpload1" runat="server" accept=".jpg,.png,.jpeg,.txt" />

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

JS代码:

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

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配置文件中:

"false" targetFramework="4.0" />
    
    "40960" />
  

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

限制大小:

//按钮
    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端限制:

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

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

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

7、控制上传文件的大小
扩容 - 系统默认允许最大上传长度是4MB
webconfig配置文件中写入



百度搜,研究,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;
}

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

标签:cep   stl   选中   研究   直接   cookie   asc   登录   nbsp   

原文地址:https://www.cnblogs.com/baimangguo/p/9253325.html


评论


亲,登录后才可以留言!