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; } };