FileUpload返回Null

时间:2011-07-25 14:47:35

标签: c# asp.net

我在我的网络应用程序中有一个FileUpload,但是当点击“提交”时,它似乎丢失了文件或其他东西而不是名称。因此,如果我有C:\ me \ Documents \ myfile.jpg,我可以捕获名称myfile.jpg,但在评估此行时说“找不到文件”(当我将鼠标悬停在此行时,在调试模式下) ...

这是我的提交按钮

 if ((myID == 0 || rbUploadImg.Checked == true) && fuImage.PostedFile.FileName.Length > 0)

以下是aspx的代码以及.cs中用于确定天气以显示上传者的复选框

     <asp:Panel ID="pnlImageEdit" runat="server" Visible="false">
         <table id="tblShowImage" border="0" cellpadding="0" cellspacing="20" runat="server">
         <tr>
            <td>
             <asp:Image ID="Image1" runat="server" />
             </td>
             <td>
                 <div class="mytyle">
                    <asp:RadioButton ID="rbCurrentImage" Text="Keep Current Image" runat="server" GroupName="Product Image" AutoPostBack="True" OnCheckedChanged="rbCurrentImage_CheckedChanged" Checked="True" />

<asp:RadioButton ID="rbUploadImg" Text="Upload New Image" runat="server" GroupName="Image" AutoPostBack="True" OnCheckedChanged="rbImage_CheckedChanged" />
                                </div>
                      </table>
                </asp:Panel>
  <asp:Panel ID="pnlImageAdd" runat="server" Visible="false">
                    <div>                        
  Select an Image :<asp:FileUpload ID="fuImage" runat="server" EnableViewState="true" />

<asp:RegularExpressionValidator 
ID="RegularExpressionValidator1" 
runat="server" 
ControlToValidate="fuCollectionImage"
CssClass="Error" Display="dynamic" ValidationExpression=".*(\.[Jj][Pp][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg]|\.[Pp][Nn][Gg])"
 ErrorMessage="Please select a valid JPEG, JPG, PNG or GIF image">
</asp:RegularExpressionValidator>
                    </div>
                </asp:Panel>

在我的cs文件中选中复选框

protected void rbNewImage_CheckedChanged(object sender, EventArgs e)
{
    pnlImageAdd.Visible = true;
}

protected void rbImage_CheckedChanged(object sender, EventArgs e)
{

}

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

只要您有其他控件为页面发回回来,这将无效。 FileUpload控件最初使用带有类型文件的输入HTML标记。当页面回发时,服务器控件无法在输入控件中设置文件路径值。由于安全限制,这无法完成。

我建议你使用Javascript(客户端)来显示/隐藏面板。

答案 1 :(得分:0)

我可能错了,但我认为您需要使用FileUpload.SaveAs方法才能访问它。按“提交”按钮时,FileUpload将清除文件。在单击提交按钮后,您应该将文件放在临时目录中以访问它。

当您使用UpdatePanel时也会发生这种情况。 UpdatePanel刷新,FileUpload丢失已发布的文件。