文件上传问题 - 如何解决?

时间:2013-08-15 10:43:22

标签: c# asp.net

我正试图在两个场景中上传文件

首先:

<input  id="File2" runat="server" name="name" type="file" clientidmode="Static"  />
<asp:Button ID="Button4" runat="server"  clientidmode="Static" 
  Text="Go CodeBehind To Get Input Value" OnClick="btnUploadClick" />

这正常工作,并且在C#

后面的代码中的postingFile不是null
protected void btnUploadClick(object sender, EventArgs e)
{
    HttpPostedFile postedFile= Request.Files[0];
}

第二

我想更改浏览按钮“text”,我已经知道了,不能直接这样做,所以我就这样解决了:

<b>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"  >
    <input  id="File1" runat="server" name="name" type="file" clientidmode="Static" onchange="setHiddenValue()" style=" visibility:hidden;" />
        <br />
        <input id="Button2" type="button" clientidmode="Static" onclick="triggerFileUpload()" value="HTML Button" />
        <br />
        <asp:Button ID="Button3" runat="server"  clientidmode="Static" Text="Go CodeBehind To Get Input Value" OnClick="btnUploadClick" />

        <script language="javascript">
            function triggerFileUpload() {
                document.getElementById("File1").click();
            }
        </script>
    </asp:Content>
<b>


protected void btnUploadClick(object sender, EventArgs e)
{
    HttpPostedFile postedFile= Request.Files[0];
}

当我按下Button2时,fileDialog打开,我选择文件,一切都OK。

但是当我按下Button3来获取服务器端c#中的文件时,Request.Files[0]为空 并且未发现任何文件。

我想要Request.Files[0],因为我想将它作为字节保存在数据库中

所以,如果你有任何想法,我会很感激

提前谢谢

1 个答案:

答案 0 :(得分:1)

我在一个空白项目中做了相同的代码(第二个场景),这很好用。你也可以这样做并检查它。

这段代码可能会破坏这一点。检查母版页或当前页面的Page_Load()方法是否有破坏文件“回发”的内容。你可以尝试:

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
      //Page_Load code
   }
}