0

我正在尝试在两种情况下上传文件

第一的:

<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" />

这工作正常,postedFile 不在nullC# 后面的代码中

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

第二:

我想更改浏览按钮“文本”,我已经知道,不能直接这样做,所以我像这样解决它:

<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 打开,我选择了文件,一切正常。

但是,当我按 Button3 在服务器端 c# 中获取文件时,它Request.Files[0]是空的,并且找不到发布的文件。

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

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

先感谢您

4

1 回答 1

1

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

可能围绕这段代码的某些东西打破了这一点。检查母版页或当前页 Page_Load() 方法是否有破坏文件“回发”的内容。你可以试试:

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
      //Page_Load code
   }
}
于 2013-09-16T20:51:06.333 回答