Chapter 6. 文件上传

步骤:

1、先将项目中的相对路径位置写出来     

  string path = "images/aaa.txt";

2、将此相对路径映射成绝对路径     

  string endpath = Server.MapPath(path);

3、保存    

   FileUpload1.SaveAs("endpath");

问题1:文件重名,容易被覆盖

办法:保留文件原有的名字
   string path = "images/"+FileUpload1.FileName;

问题2:文件重名,多人上传同一名称的文件会被覆盖

办法:名称添加时间拼接,用户名拼接

   string path="images/"+DateTime.Now.ToString("yyyyMMddHHmmss")+Request.Cookies["User"].Value+FileUpload1.FileName;

问题3:上传文件格式限制

办法1:

  控件属性:accept = ".jpg,.png,.jpeg"; 

办法2:

  使用JS,获取用户选择文件的后缀名,验证是否与要求的一致 

document.getElementById("Button1").onclick = function () 
{
var fl = document.getElementById("FileUpload1"); var aa = fl.value.substr(fl.value.length - 4, 4); if (aa != ".txt" && aa != ".png" && aa != ".jpg")
     { alert(
"文件格式选择不正确!"); return false; } };

 

问题4:文件过大

办法1、扩容

  Web.config配置文件:
    <httpRuntime maxRequestLength="40960"/>
    以KB为单位,默认4096,不要太大,因为会占用服务器内存

办法2、文件大小限制
  1、C#端限制
    if (FileUpload1.PostedFile.ContentLength > (4096 * 1024))  但是,不好用

  2、客户端JS限制
    fl.files[0].size 能获取到选中文件的大小,B为单位

document.getElementById("Button1").onclick = function () 
{
        var fl = document.getElementById("FileUpload1");

        if (fl.files[0].size > (1024 * 1024 * 4)) 
     {
            alert("文件超过4MB");
            return false;
        }
};

 

posted @ 2016-10-09 18:56  庚xiao午  阅读(144)  评论(0编辑  收藏  举报