• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型)

    小编之前也介绍了许多ASP.NET文件上传的解决案例,今天来个asp.net文件上传大集合。

    1 使用标准HTML来进行图片上传
    前台代码:

    body> 
     form id="form1" runat="server"> 
     div> 
      table> 
       tr> 
        td colspan="2" style="height: 21px" > 
         使用标准HTML来进行图片上传/td> 
       /tr> 
       tr> 
        td style="width: 400px"> 
         input id="InputFile" style="width: 399px" type="file" runat="server" />/td> 
        td style="width: 80px"> 
         asp:Button ID="UploadButton" runat="server" Text="上传图片" OnClick="UploadButton_Click" />/td> 
       /tr> 
       tr> 
        td colspan="2" > 
         asp:Label ID="Lb_Info" runat="server" ForeColor="Red">/asp:Label>/td>     
       /tr> 
      /table>  
     /div> 
     /form> 
    /body>


    后台代码:

    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; 
    
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
    
     } 
     protected void UploadButton_Click(object sender, EventArgs e) 
     { 
      string uploadName = InputFile.Value;//获取待上传图片的完整路径,包括文件名 
      //string uploadName = InputFile.PostedFile.FileName; 
      string pictureName = "";//上传后的图片名,以当前时间为文件名,确保文件名没有重复 
      if (InputFile.Value != "") 
      { 
       int idx = uploadName.LastIndexOf("."); 
       string suffix = uploadName.Substring(idx);//获得上传的图片的后缀名 
       pictureName = DateTime.Now.Ticks.ToString() + suffix; 
      } 
      try 
      { 
       if (uploadName != "") 
       { 
        string path = Server.MapPath("~/images/"); 
        InputFile.PostedFile.SaveAs(path + pictureName); 
       } 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex); 
      } 
     } 
    }

    2 单文件上传
    这是最基本的文件上传,在asp.net1.x中没有这个FileUpload控件,只有html的上传控件,那时候要把html控件转化为服务器控件, 很不好用。其实所有文件上传的美丽效果都是从这个FileUpload控件衍生,第一个例子虽然简单却是根本。
    前台代码:

    body> 
     form id="form1" runat="server"> 
     div> 
      table style="width: 90%"> 
       tr> 
        td style="width: 159px" colspan=2> 
         strong>span style="font-size: 10pt">最简单的单文件上传/span>/strong>/td> 
       /tr> 
       tr> 
        td style="width: 600px"> 
         asp:FileUpload ID="FileUpload1" runat="server" Width="600px" />/td> 
        td align=left> 
         asp:Button ID="FileUpload_Button" runat="server" Text="上传图片" OnClick="FileUpload_Button_Click" />/td> 
       /tr> 
       tr> 
        td colspan=2> 
         asp:Label ID="Upload_info" runat="server" ForeColor="Red" Width="767px">/asp:Label>/td> 
       /tr> 
      /table>  
     /div> 
     /form> 
    /body>

    后台代码:

    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; 
    
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
    
     } 
     protected void FileUpload_Button_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (FileUpload1.PostedFile.FileName == "") 
       //if (FileUpload1.FileName == "") 
       //if (!FileUpload1.HasFile)  //获取一个值,该值指示 System.Web.UI.WebControls.FileUpload 控件是否包含文件。包含文件,则为 true;否则为 false。 
       { 
        this.Upload_info.Text = "请选择上传文件!"; 
       } 
       else 
       { 
        string filepath = FileUpload1.PostedFile.FileName; //得到的是文件的完整路径,包括文件名,如:C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
        //string filepath = FileUpload1.FileName;    //得到上传的文件名20022775_m.jpg 
        string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);//20022775_m.jpg 
        string serverpath = Server.MapPath("~/images/") + filename;//取得文件在服务器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg 
        FileUpload1.PostedFile.SaveAs(serverpath);//将上传的文件另存为 
        this.Upload_info.Text = "上传成功!"; 
       } 
      } 
      catch (Exception ex) 
      { 
       this.Upload_info.Text = "上传发生错误!原因是:" + ex.ToString(); 
      } 
     } 
    }


    3、多文件上传
    前台代码:

    body> 
     form id="form1" runat="server"> 
     div> 
     table style="width: 343px"> 
       tr> 
        td style="width: 100px"> 
         多文件上传/td> 
        td style="width: 100px"> 
        /td> 
       /tr> 
       tr> 
        td style="width: 100px"> 
         asp:FileUpload ID="FileUpload1" runat="server" Width="475px" /> 
         /td> 
        td style="width: 100px"> 
         /td> 
       /tr> 
       tr> 
        td style="width: 100px"> 
         asp:FileUpload ID="FileUpload2" runat="server" Width="475px" />/td> 
        td style="width: 100px"> 
        /td> 
       /tr> 
       tr> 
        td style="width: 100px"> 
         asp:FileUpload ID="FileUpload3" runat="server" Width="475px" />/td> 
        td style="width: 100px"> 
        /td> 
       /tr> 
       tr> 
        td style="width: 100px"> 
         asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="一起上传" /> 
         asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="448px">/asp:Label>/td> 
        td style="width: 100px"> 
        /td> 
       /tr> 
      /table> 
     /div> 
     /form> 
    /body>


    后台代码:

    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; 
    
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
    
     } 
     protected void bt_upload_Click(object sender, EventArgs e) 
     { 
      if (FileUpload1.PostedFile.FileName == ""  FileUpload2.PostedFile.FileName == ""  FileUpload3.PostedFile.FileName == "") 
      { 
       this.lb_info.Text = "请选择文件!"; 
      } 
      else 
      { 
       HttpFileCollection myfiles = Request.Files; 
       for (int i = 0; i  myfiles.Count; i++) 
       { 
        HttpPostedFile mypost = myfiles[i]; 
        try 
        { 
         if (mypost.ContentLength > 0) 
         { 
          string filepath = mypost.FileName;//C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
          string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);//20022775_m.jpg 
          string serverpath = Server.MapPath("~/images/") + filename;//C:\Inetpub\wwwroot\WebSite2\images\20022775_m.jpg 
          mypost.SaveAs(serverpath); 
          this.lb_info.Text = "上传成功!"; 
         } 
        } 
        catch (Exception ex) 
        { 
         this.lb_info.Text = "上传发生错误!原因:" + ex.Message.ToString(); 
        } 
       } 
      } 
     } 
    }

    4、客户端检查上传文件类型(以上传图片为例)

    %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
    
    !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    
    html xmlns="http://www.w3.org/1999/xhtml" > 
    head runat="server"> 
     title>客户端检查上传文件类型/title> 
     script language="javascript"> 
     function Check_FileType() 
     { 
      var str=document.getElementById("FileUpload1").value; 
      var pos=str.lastIndexOf("."); 
      var lastname=str.substring(pos,str.length); 
      if(lastname.toLowerCase()!=".jpg"lastname.toLowerCase()!=".gif") 
      { 
       alert("您上传的文件类型为"+lastname+",图片必须为.jpg,.gif类型"); 
       return false; 
      } 
      else 
      { 
       return true; 
      }   
     } 
     /script> 
    /head> 
    body> 
     form id="form1" runat="server"> 
     div> 
      table> 
       tr> 
        td colspan="2"> 
         客户端检查上传文件类型/td>     
       /tr> 
       tr> 
        td style="width: 444px"> 
         asp:FileUpload ID="FileUpload1" runat="server" Width="432px" />/td> 
        td style="width: 80px"> 
         asp:Button ID="bt_upload" runat="server" Text="上传图片" OnClick="bt_upload_Click" OnClientClick="return Check_FileType()" />/td> 
       /tr> 
       tr> 
        td colspan="2" style="height: 21px"> 
         asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="515px">/asp:Label>/td>     
       /tr> 
      /table>  
     /div> 
     /form> 
    /body> 
    /html>

    注意:点击上传时先触发客户端事件OnClientClick="return Check_FileType()"

    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; 
    
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
    
     } 
    
     protected void bt_upload_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (FileUpload1.PostedFile.FileName == "") 
       { 
        this.lb_info.Text = "请选择文件!"; 
       } 
       else 
       { 
        string filepath = FileUpload1.PostedFile.FileName; 
        //if (!IsAllowedExtension(FileUpload1)) 
        //{ 
        // this.lb_info.Text = "上传文件格式不正确!"; 
        //} 
        if (IsAllowedExtension(FileUpload1) == true) 
        { 
         string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1); 
         string serverpath = Server.MapPath("~/images/") + filename; 
         FileUpload1.PostedFile.SaveAs(serverpath); 
         this.lb_info.Text = "上传成功!"; 
        } 
        else 
        { 
         this.lb_info.Text = "请上传图片!"; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       this.lb_info.Text = "上传发生错误!原因:" + ex.ToString(); 
      } 
     } 
     private static bool IsAllowedExtension(FileUpload upfile) 
     { 
      string strOldFilePath = ""; 
      string strExtension=""; 
      string[] arrExtension ={ ".gif", ".jpg", ".bmp", ".png" }; 
      if (upfile.PostedFile.FileName != string.Empty) 
      { 
       strOldFilePath = upfile.PostedFile.FileName;//获得文件的完整路径名 
       strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));//获得文件的扩展名,如:.jpg 
       for (int i = 0; i  arrExtension.Length; i++) 
       { 
        if (strExtension.Equals(arrExtension[i])) 
        { 
         return true; 
        } 
       } 
      } 
      return false; 
     } 
    }

    注意:若去掉客户端的脚本和客户端事件OnClientClick="return Check_FileType()",在后台代码
    改为:

    if (!IsAllowedExtension(FileUpload1)) 
        { 
         this.lb_info.Text = "上传文件格式不正确!"; 
        } 


    else if (IsAllowedExtension(FileUpload1) == true)
    即变成服务器端检查上传文件类型。
    5、服务器端检查上传文件的类型(文件内部真正的格式)

    body> 
     form id="form1" runat="server"> 
     div> 
      table> 
       tr> 
        td colspan="2"> 
         服务器检查上传文件类型/td>     
       /tr> 
       tr> 
        td style="width: 444px"> 
         asp:FileUpload ID="FileUpload1" runat="server" Width="432px" />/td> 
        td style="width: 80px"> 
         asp:Button ID="bt_upload" runat="server" Text="上传图片" OnClick="bt_upload_Click" />/td> 
       /tr> 
       tr> 
        td colspan="2" style="height: 21px"> 
         asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="515px">/asp:Label>/td>     
       /tr> 
      /table>  
     /div> 
     /form> 
    /body>

    后台代码:

    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.IO; 
    
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
    
     } 
     protected void bt_upload_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (FileUpload1.PostedFile.FileName == "") 
       { 
        this.lb_info.Text = "请选择文件!"; 
       } 
       else 
       { 
        string filepath = FileUpload1.PostedFile.FileName; 
        if (IsAllowedExtension(FileUpload1) == true) 
        { 
         string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1); 
         string serverpath = Server.MapPath("images/") + filename; 
         FileUpload1.PostedFile.SaveAs(serverpath); 
         this.lb_info.Text = "上传成功!"; 
        } 
        else 
        { 
         this.lb_info.Text = "请上传图片"; 
        } 
       } 
      } 
      catch (Exception error) 
      { 
       this.lb_info.Text = "上传发生错误!原因:" + error.ToString(); 
      } 
     } 
     private static bool IsAllowedExtension(FileUpload upfile) 
     { 
      FileStream fs = new FileStream(upfile.PostedFile.FileName, FileMode.Open, FileAccess.Read); 
      BinaryReader r = new BinaryReader(fs); 
      string fileclass = ""; 
      byte buffer; 
      try 
      { 
       buffer = r.ReadByte(); 
       fileclass = buffer.ToString(); 
       buffer = r.ReadByte(); 
       fileclass += buffer.ToString(); 
      } 
      catch 
      { 
        
      } 
      r.Close(); 
      fs.Close(); 
      if (fileclass == "255216" || fileclass == "7173"||fileclass=="6677"||fileclass=="13780")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
    }

    为大家推荐一个专题,供大家学习:《ASP.NET文件上传汇总》

    是不是内容很精彩,喜欢的朋友就收藏起来吧,以后在遇到ASP.NET文件上传问题的时候能够有所帮助。
    您可能感兴趣的文章:
    • ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)
    • ASP.NET实现上传图片并生成缩略图的方法
    • ASP.NET图片上传实例(附源码)
    • asp.net fileupload控件上传图片并预览图片
    • Asp.Net上传图片同时生成高清晰缩略图
    • asp.net图片上传实例
    • ASP.net WebAPI 上传图片实例
    • Asp.Net平台下的图片在线裁剪功能的实现代码(源码打包)
    • 基于asp.net实现图片在线上传并在线裁剪功能
    上一篇:初识ASP.NET Mvc5+EF7的奇妙之旅
    下一篇:ASP.NET实现按拼音码模糊查询的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型) asp.net,文件,上传,解决方案,