ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法,需要的朋友可以参考下
方法一:用Web控件FileUpload,上传到网站根目录。 Test.aspx关键代码: 代码如下:<form id="form1" runat="server"><asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click" /><asp:Label ID="Label1" runat="server" Text="" Style="color: Red"></asp:Label></form> Test.aspx.cs关键代码: 代码如下:protected void Button1_Click(object sender, EventArgs e){ if (FileUpload1.HasFile) { FileUpload1.SaveAs(Server.MapPath("~/") + FileUpload1.FileName); Label1.Text = "上传成功!"; }} 方法二:用Html控件HtmlInputFile,上传到网站根目录。 Test.aspx关键代码: 代码如下:<form id="form1" runat="server"><input type="file" id="file1" runat="server" /><asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click" /><asp:Label ID="Label1" runat="server" Text="" Style="color: Red"></asp:Label></form> Test.aspx.cs关键代码: 代码如下:protected void Button1_Click(object sender, EventArgs e){ if (file1.PostedFile.ContentLength > 0) { file1.PostedFile.SaveAs(Server.MapPath("~/") + Path.GetFileName(file1.PostedFile.FileName)); Label1.Text = "上传成功!"; }} 方法三:用Html元素<input type="file" …/>,通过Request.Files上传到网站根目录。 Test.aspx关键代码: 代码如下:<form id="form1" runat="server" enctype="multipart/form-data"><input type="file" name="file" /><asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click" /><asp:Label ID="Label1" runat="server" Text="" Style="color: Red"></asp:Label></form> Test.aspx.cs关键代码: 代码如下:protected void Button1_Click(object sender, EventArgs e){ if (Request.Files["file"].ContentLength > 0) { Request.Files["file"].SaveAs(Server.MapPath("~/") + Path.GetFileName(Request.Files["file"].FileName)); Label1.Text = "上传成功!"; }} 注意两个区别: 一:FileUpload.FileName获取客户端上传文件名(不带路径),而file1.PostedFile.FileName 和Request.Files["file"].FileName在不同浏览器下情况不同:IE8下获得的是客户端上传文件的完全限定名(带路径),谷歌、苹果等浏览器下则仍为文件名(不带路径)。 二:FileUpload控件有HasFile属性,用于判断用户是否选择了上传文件,而后面两种方法则需要通过判断上传文件大小ContentLength属性,当用户没有选择上传文件时,该属性值为0。 可以看出FileUpload封装程度更高,但灵活性也稍差。 例,Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印) 代码如下:using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; using System.IO; using System.Drawing.Imaging; namespace EC { /// <summary> /// 上传类 /// </summary> public class UploadObj { public UploadObj() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 允许文件上传的类型枚举 /// </summary> public enum FileType { jpg,gif,bmp,png } #region 取得文件后缀 /// <summary> /// 取得文件后缀 /// </summary> /// <param name="filename">文件名称</param> /// <returns></returns> public static string GetFileExtends(string filename) { string ext = null; if (filename.IndexOf('.') > 0) { string[] fs = filename.Split('.'); ext = fs[fs.Length - 1]; } return ext; } #endregion #region 检测文件是否合法 /// <summary> /// 检测上传文件是否合法 /// </summary> /// <param name="fileExtends">文件后缀名</param> /// <returns></returns> public static bool CheckFileExtends(string fileExtends) { bool status = false; fileExtends = fileExtends.ToLower(); string[] fe = Enum.GetNames(typeof(FileType)); for (int i = 0; i < fe.Length; i++) { if (fe[i].ToLower() == fileExtends) { status = true; break; } } return status; } #endregion #region 保存文件 /// <summary> /// 保存文件 /// </summary> /// <param name="fpath">全路径,Server.MapPath()</param> /// <param name="myFileUpload">上传控件</param> /// <returns></returns> public static string PhotoSave(string fpath,FileUpload myFileUpload) { string s = ""; string fileExtends = ""; string fileName = myFileUpload.FileName; if (fileName != "") { //取得文件后缀 fileExtends = EC.UploadObj.GetFileExtends(fileName); if (!EC.UploadObj.CheckFileExtends(fileExtends)) { EC.MessageObject.ShowPre("上传新闻热点
疑难解答