<body> <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload1" runat="server" /><!--上传文件的控件--> <asp:Button ID="Button1" runat="server" Text="上传" /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </div> </form> </body> </html>
问题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为单位
<script type="text/javascript"> document.getElementById("Button1").onclick = function () { var fl = document.getElementById("FileUpload1"); if (fl.files[0].size > (1024 * 1024 * 4)) { alert("文件超过4MB"); return false; } }; 问题3:上传文件格式限制 使用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; // } //}; </script>
1、将目标文件传到目标路径下
先将项目中的相对路径位置写出来
string path = "images/aaa.txt";
将此相对路径映射成绝对路径
string endpath = Server.MapPath(path);
记住FileUpload1.SaveAs("保存的绝对路径");
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } void Button1_Click(object sender, EventArgs e) {
问题1:文件重名,切容易被覆盖
办法:保留文件原有的名字
问题2:文件重名,多人上传同一名称的文件会被覆盖
名称添加时间拼接,用户名拼接
string path = "images/" + DateTime.Now.ToString("yyyyMMddhhmmss") +Request.Cookies["User"].Value+ FileUpload1.FileName; string endpath = Server.MapPath(path); if (FileUpload1.PostedFile.ContentLength > (4096 * 1024)) { Label1.Text = "文件超过4MB"; } else { FileUpload1.SaveAs(endpath);保存 } }