要使用控件 - FileUpload
1、如何判断是否选中文件?
FileUpload.FileName -
选中文件的文件名,如果长度不大于0,那么说明没选中任何文件
js - f.value.length
2、如何保存到服务器上?
FileUpload.SaveAs("绝对路径");
3、如何获得绝对路径?
先编写相对路径 - "UpLoads/abc.txt"
将相对路径映射成绝对路径 - Server.MapPath("UpLoads/abc.txt");
4、现在只能上传成为txt文件,并且名字只能是abc,如何保留文件原有的名字和文件类型?
"UpLoads/" + FileUpload1.FileName;
5、如何防止重名覆盖的问题?
"UpLoads/" + Request.Cookies["user"].Value + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;
6、如何限制选中文件的类型?
限制普通人,给控件添加属性 - accept=".jpg,.png,.jpeg,.txt"
限制找事的:
1 document.getElementById("Button1").onclick = function () { 2 var fileName = document.getElementById("FileUpload1").value; 3 4 var name = fileName.substr(fileName.length - 4, 4); 5 var name1 = fileName.substr(fileName.length - 5, 5); 6 if (name != ".jpg" && name != ".png" && name != ".txt" && name1 != ".jpeg") 7 { 8 alert("请选择正确的文件!你要找事儿啊??"); 9 return false; 10 } 11 };
7、控制上传文件的大小
扩容 - 系统默认允许最大上传长度是4MB
webconfig配置文件中写入
<system.web> <compilation debug="false" targetFramework="4.0" /> <httpRuntime maxRequestLength="40000" /> </system.web>
百度搜,研究,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; }
例子:
界面:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 8 <title></title> 9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 <asp:FileUpload ID="FileUpload1" runat="server" accept=".jpg,.png,.jpeg,.txt" /> 14 <asp:Button ID="Button1" runat="server" Text="上传" /> 15 <asp:Label ID="Label1" runat="server" Text=""></asp:Label> 16 </div> 17 </form> 18 </body> 19 </html> 20 <script type="text/javascript"> 21 document.getElementById("Button1").onclick = function () { 22 //限制选中文件的类型 23 var fileName = document.getElementById("FileUpload1").value; 24 var name = fileName.substr(fileName.length-4,4);//文件名后4位 25 var name1 = fileName.substr(fileName.length - 5, 5);//文件名后5位 26 if(name!=".jpg"&&name!=".png"&&name!=".txt"&&name1!=".jpeg") 27 { 28 alert("请选择正确的文件类型!!"); 29 return false; 30 } 31 //限制大小 32 var fu = document.getElementById("FileUpload1"); 33 //fu.files[0].size 选中文件的长度 34 if (fu.files[0].size > (4 * 1024 * 1024)) { 35 alert("文件过大"); 36 return false; 37 } 38 } 39 </script>
后台:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 8 public partial class _Default : System.Web.UI.Page 9 { 10 protected void Page_Load(object sender, EventArgs e) 11 { 12 Button1.Click += Button1_Click; 13 } 14 15 void Button1_Click(object sender, EventArgs e) 16 { 17 //若为选择文件 18 if (FileUpload1.FileName.Length <= 0) 19 { 20 Label1.Text = "请选择文件!"; 21 return; 22 } 23 //若上传文件大于设置的最大长度 24 if(FileUpload1.PostedFile.ContentLength>(4*1024*1024)) 25 { 26 Label1.Text = "文件过大!"; 27 return; 28 } 29 //上传路径 30 string path = "Uploads" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName; 31 string endpath = Server.MapPath(path); 32 //保存到路径中 33 FileUpload1.SaveAs(endpath); 34 35 36 } 37 }
webconfig:
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- 4 有关如何配置 ASP.NET 应用程序的详细信息,请访问 5 http://go.microsoft.com/fwlink/?LinkId=169433 6 --> 7 8 <configuration> 9 10 <system.web> 11 <compilation debug="false" targetFramework="4.0" /> 12 <httpRuntime maxRequestLength="4096"/> 13 </system.web> 14 15 </configuration>