我上传文件时为什么会显示PostedFile为null
我用的控件是
<INPUT id="hifSendDoc" style="Z-INDEX: 103; LEFT: 187px; WIDTH: 262px; POSITION: absolute; TOP: 72px; HEIGHT: 22px" type="file" size="24" runat="server" >
我选择了文件按上传后,跟踪到hifSendDoc.PostedFile为null,但我确实是选择了要上传的文件啊。
我是在.net 2002下出现了这样的问题,但在2003下我这样用没有一点问题。
请各位大虾帮忙。

解决方案 »

  1.   

    那就说明net2002有点问题,2003没有问题你就用2003吧,有关系吗?
      

  2.   

    页面代码:
    <%@ Page language="c#" Codebehind="ImportProjectData.aspx.cs" AutoEventWireup="false" Inherits="RMQM.KnowledgeManage.ImportProjectData" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>ImportPSData</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body topMargin="0" ms_positioning="GridLayout">
    <FORM id="Form1" method="post" runat="server">
    <INPUT class="btn3" id="bnImport" type="button" value="导  入" name="Button1" runat="server" style="Z-INDEX: 101; LEFT: 188px; POSITION: absolute; TOP: 114px">
    <INPUT class="btn3" id="bn_back" type="button" value="返  回" name="Button1" runat="server" style="Z-INDEX: 102; LEFT: 380px; POSITION: absolute; TOP: 116px">&nbsp;&nbsp;
    <INPUT id="hifSendDoc" style="Z-INDEX: 103; LEFT: 187px; WIDTH: 262px; POSITION: absolute; TOP: 72px; HEIGHT: 22px" type="file" size="24" runat="server">
    </FORM>
    </body>
    </HTML>C#代码:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Data.OleDb;
    using  Microsoft.Data.Odbc;namespace RMQM.KnowledgeManage
    {
    /// <summary>
    /// ImportPSData 的摘要说明。
    /// </summary>
    public class ImportProjectData : System.Web.UI.Page
    {
    protected System.Web.UI.HtmlControls.HtmlInputButton bnImport;
    protected System.Web.UI.HtmlControls.HtmlInputFile hifSendDoc;
    protected System.Web.UI.HtmlControls.HtmlInputButton bn_back;

    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.bnImport.ServerClick += new System.EventHandler(this.bnImport_ServerClick); }
    #endregion private void bnImport_ServerClick(object sender, System.EventArgs e)
    {
    //上传文件
    string SavePath,FileName,FileType,types = ".xls";
    double Size;
    string sPath=System.Configuration.ConfigurationSettings.AppSettings["ImportDir"].ToString();
    //string sPath=@"c:\";
    SavePath = Server.MapPath(sPath);
    //FileName = System.IO.Path.GetFileName(this.hifSendDoc.PostedFile.FileName);
    FileName = System.IO.Path.GetFileName(this.hifSendDoc.Value);
    if(FileName.TrimEnd() == "")
    {
    Response.Write("<script>alert('请先选择要导入的文件!!')</script>");
    return;
    }
    Size = this.hifSendDoc.PostedFile.ContentLength;
    Size = Math.Round(Size/1024,2);
    int pos = FileName.LastIndexOf(".");
    FileType = FileName.Substring(pos).ToLower();

    if(types.IndexOf(FileType) == -1)
    {
    Response.Write("<script>alert('您上传的文件格式不正确,必须是Excel文档!')</script>");
    return;
    }
    FileName = System.DateTime .Today.Year.ToString()+System.DateTime .Today.Month.ToString()+System.DateTime .Today.Day.ToString()+System.DateTime .Today.Hour.ToString ()+System.DateTime .Today.Minute.ToString()+ ".xls";
    try
    {
    FileName = SavePath + FileName;
    this.hifSendDoc.PostedFile.SaveAs(FileName);
    }
    catch(Exception er)
    {
    er.ToString ();
    Response.Write("<script>alert('文件上传失败!')</script>");
    //this.lbMessage.Value ="";
    return;
    }
    }
    }
      

  3.   

    我要在一个用2002开的大系统中增加excel文件导入到数据库,一定要用2002。我导入时先上俯仰无愧传文件,上传时就出了这个错。
      

  4.   

    请将<form id="Form1" method="post" runat="server"> 改成:<form id="Form1" method="post" runat="server" enctype="multipart/form-data"> 就OK啦!别忘了给分哟! :)
      

  5.   

    先判断上传文件的扩展名看看。
    参考: 
    http://dotnet.aspx.cc/ShowDetail.aspx?id=58EA3515-36F2-4FD9-AC89-EAF49F59816C
      

  6.   

    enctype="multipart/form-data" 这个是必须的!
      

  7.   

    只需要这样写就好了:
    <INPUT id="hifSendDoc" style="Z-INDEX: 103; LEFT: 187px; WIDTH: 262px; POSITION: absolute; TOP: 72px; HEIGHT: 22px" type="file" size="24" runat="server">
    千万不能加:enctype="multipart/form-data"