//用fileinput控件
If Trim(Me.txt_Name.Text) = "" Then
            Response.Write("<script language=javascript>alert(' 请填写文件名称!');</script>")
            Exit Sub
        End If
        If File1.PostedFile.FileName = "" Then
            Response.Write("<script language=javascript>alert(' 请选择上传文件!');</script>")
            Exit Sub
        End If
        Dim lstrFileName As String = File1.PostedFile.FileName
        ' 注: loFile.PostedFile.FileName 返回的是通过文件对话框选择的文件名,
        '这之中包含了文件的目录信息()
        Dim FileName As String = Path.GetFileName(lstrFileName)
        ' 去掉目录信息,返回文件名称
        Dim lstrFileFolder As String = Server.MapPath("./") & "EnClS\"
        If (Not Directory.Exists(lstrFileFolder)) Then
            Directory.CreateDirectory(lstrFileFolder)
        End If
        Dim lstrFileNamePath As String = lstrFileFolder & Request.Params("Type") & "-" & Session("userid") & FileName
        ' 得到上传目录及文件名称 
        If File1.PostedFile.ContentLength > 4000000 Then
            Response.Write("<script language=javascript>alert('上传文件过大!上传文件请不要大于4M!');</script>")
            Exit Sub
        End If
        Try
            File1.PostedFile.SaveAs(lstrFileNamePath)
            '上传文件到服务器
        Catch ex As Exception
        End Try

解决方案 »

  1.   

    记住把在form的属性中加上encType="multipart/form-data"
    <FORM id="Form1" method="post" encType="multipart/form-data" runat="server">
      

  2.   

    <% @ Page language="c#" Debug="true"%>
    <% @ Import Namespace="System.Data" %>
    <script runat="server">
    protected void upload(Object sender, EventArgs e)
    {


    string fileEXT = "";
    int errorflag = 0;
    if(upload_file.PostedFile == null)
    {
    Info.InnerHtml="请先选择一个文件再点上传。";
    errorflag=1;
    }
    else
    {
    if(upload_file.PostedFile.FileName.Length > 0)
    fileEXT = upload_file.PostedFile.FileName.Substring(upload_file.PostedFile.FileName.Length-3).ToLower();

    if(fileEXT != "gif" && fileEXT != "jpg" && fileEXT != "zip" && fileEXT != "rar")
    {
    Info.InnerHtml="只接受 jpg,gif,zip,rar 四种格式。";
    errorflag=1;
    }
    else

        if(upload_file.PostedFile.ContentLength == 0)
        {
        Info.InnerHtml="您的文件为空或者你没选文件,请选择一个文件再点粘贴。";
        errorflag=1;
         }
        else if(upload_file.PostedFile.ContentLength > 100000)
        {
        Info.InnerHtml="您的文件超过了100K,请选择一个文件再点粘贴。";
        errorflag=1;
         }
    }
    }
    if(errorflag==0)
    {
        try
        {
      string path=Server.MapPath("UpFile");
      string y=DateTime.Now.Year.ToString();
      string m=DateTime.Now.Month.ToString();
      string d=DateTime.Now.Day.ToString();
      string h=DateTime.Now.Hour.ToString();
      string n=DateTime.Now.Minute.ToString();
      string s=DateTime.Now.Second.ToString();
      string filename=y+m+d+h+n+s;
      Random r=new Random();
      filename=filename+r.Next(1000);
      filename=filename+"."+upload_file.PostedFile.FileName.Substring(upload_file.PostedFile.FileName.Length-3);
      filename=path+"/"+filename;
      upload_file.PostedFile.SaveAs(filename);
      upload_file.Visible=false;
      Button1.Visible=false;
        Info.InnerHtml="成功上传一个文件点击 <a href=Upimages2.aspx>这儿</a> 继续上传";
      Info.Visible=true;
     }
     catch
     {
      upload_file.Visible=false;
      Button1.Visible=false;
        Info.InnerHtml="对不起!上传失败请点击 <a href=Upimages2.aspx>这儿</a> 继续上传";
      Info.Visible=true;
     }
    }
    else
    {
       
    Info.Visible=true;
    }

    }
    </script>
    <HTML>
    <HEAD>
    <meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb2312">
    <LINK href="forum.css" rel="stylesheet">
    </HEAD>
    <body leftmargin="5" topmargin="3">
    <form id="Up" method="post" encType="multipart/form-data" runat="server">
    <input id="upload_file" type="file" size="20" name="upload_file" EnableViewState="false" runat="server">
    <asp:Button id="Button1" OnClick="upload" runat="server" Text="上传"></asp:Button>
    <span runat="server" id="Info">类型:gif,jpg,zip,rar 限制为100k</span>
    </form>
    </body>
    </HTML>
      

  3.   

    将文件用base64编码一下,然后传,然后解码,然后存。或者,<form id="Up" method="post" encType="multipart/form-data" runat="server">C#:
    this.Request.Files[0].SaveAs(@"d:\ud\asdf.htm");
      

  4.   

    To: boow(网络小王子)
      如果要上传一个目录,可能需要你重新写程序来实现。
    原理是这样的,首先找到本地的文件或者目录名,
    历遍所有文件,遇到文件夹,再历遍所有文件。。
    然后把一个文件一个文件上传到服务器。按照本地找到文件夹一一建立,upload文件
      

  5.   

    建议:
    1.不用ASP.NET的自带的工具.(它总要客户正确处理且有无穷的耐性)
    2.服务器开通FTP服务.指定FTP根目录.(添加用户及权限)
    3.用VB做出一个控件,它可以专门用来上传客户端文件到服务器上.
    4.在ASP.NET中调用这个控件.
    我自己就是这么做的,好的很.