为什么我的fileupload控件不能正常工作

时间:2012-07-10 09:10:56

标签: c# asp.net

我的asp.net页面中有一个FileUpload控件,它应该将我的图片上传到主机上的某个文件夹中。我提出一个条件,当它有文件时,它开始上传。 这个代码。

 if (File2.HasFile)
 {
      string b = File2.FileName.ToString();
      File2.PostedFile.SaveAs(path + File2.FileName);
 } 

但条件永远不会成真。我在该页面中有另外两个FileUpload。它们工作正常。但是这个工作不正常并且条件总是错误的。 我该怎么办?

这是HTML代码:

<asp:UpdatePanel ID="UpdatePanel3" runat="server">
                   <ContentTemplate>
                       <table cellpadding="0" cellspacing="0" class="style4" dir="rtl" 
                           style="border: thin solid #008080">
                           <tr>
                               <td>
                                   &nbsp;</td>
                               <td>
                                   &nbsp;</td>
                           </tr>
                           <tr>
                               <td>
                                   <div style=" border-width: thin; border-color: #008080; border-left-style: solid;">
                                       <asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
                                           AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource4" 
                                           ForeColor="#333333" GridLines="None" onrowcommand="GridView2_RowCommand" 
                                           PageSize="6" Width="130px" Height="200px" ShowHeader="False">
                                           <AlternatingRowStyle BackColor="White" />
                                           <Columns>
                                               <asp:TemplateField>
                                                   <ItemTemplate>
                                                       <asp:LinkButton ID="LinkButton1" runat="server" 
                                                           CommandArgument='<%#Eval("PID") %>' CommandName="LnkEdit" 
                                                           Text='<%#Eval("Pname") %>'></asp:LinkButton>
                                                   </ItemTemplate>
                                               </asp:TemplateField>
                                           </Columns>
                                           <EditRowStyle BackColor="#7C6F57" />
                                           <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                                           <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                                           <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                                           <RowStyle BackColor="#E3EAEB" />
                                           <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                                           <SortedAscendingCellStyle BackColor="#F8FAFA" />
                                           <SortedAscendingHeaderStyle BackColor="#246B61" />
                                           <SortedDescendingCellStyle BackColor="#D4DFE1" />
                                           <SortedDescendingHeaderStyle BackColor="#15524A" />
                                       </asp:GridView>
                                   </div>
                                   <asp:Label ID="Label18" runat="server"></asp:Label>
                               </td>
                               <td>
                                   <div style="float  :right">
                                       <table cellpadding="0" cellspacing="0" style="width: 500px">
                                           <tr>
                                               <td>
                                                   <asp:Label ID="Label1" runat="server" Text="نام"></asp:Label>
                                               </td>
                                               <td align="right">
                                                   <asp:TextBox ID="TxTEditname" runat="server"></asp:TextBox>
                                               </td>
                                           </tr>
                                           <tr>
                                               <td>
                                                   <asp:Label ID="Label15" runat="server" Text="زبان"></asp:Label>
                                               </td>
                                               <td align="right">
                                                   <asp:DropDownList ID="DropDownList4" runat="server">
                                                       <asp:ListItem Value="en">English</asp:ListItem>
                                                       <asp:ListItem Value="fa">فارسی</asp:ListItem>
                                                   </asp:DropDownList>
                                               </td>
                                           </tr>
                                           <tr>
                                               <td>
                                                   <asp:Label ID="Label2" runat="server" Text="توضیحات"></asp:Label>
                                               </td>
                                               <td align="right">
                                                   <asp:TextBox ID="TxTEditdes" runat="server" Height="102px" 
                                                       TextMode="MultiLine" Width="380px"></asp:TextBox>
                                               </td>
                                           </tr>
                                           <tr>
                                               <td>
                                                   <asp:Label ID="Label19" runat="server" Text="عکس جدید"></asp:Label>
                                               </td>
                                               <td align="right">
                                                   <asp:FileUpload ID="File2" runat="server" />
                                               </td>
                                           </tr>
                                           <tr>
                                               <td>
                                                   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                                                       Text="ثبت تغییرات" />
                                               </td>
                                               <td>
                                                   <asp:Label ID="Label17" runat="server"></asp:Label>
                                               </td>
                                           </tr>
                                       </table>
                                   </div>
                               </td>
                           </tr>
                       </table>
                   </ContentTemplate>




               </asp:UpdatePanel>

3 个答案:

答案 0 :(得分:2)

来自MSDN页面:

  

以下ASP.NET控件与部分页面不兼容   更新,因此不适用于UpdatePanel内部   控制:

     
      
  • FileUploadHtmlInputFile控制何时用于上传文件,作为异步回发的一部分。

  •   
  • -

  •   
     

在...中使用FileUploadHtmlInputFile控件    UpdatePanel 控件,将提交文件的回发控件设置为面板的PostBackTrigger控件。

所以你需要为回发控制设置Triggers属性(Button等)

示例:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:FileUpload ID="FileUpload1" runat="server" />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="Button1" />
        </Triggers>
</asp:UpdatePanel>

代码隐藏

protected void Button1_Click(object sender, EventArgs e)
  {
     if(FileUpload1.HasFile)
      {
        FileUpload1.SaveAs(MapPath("~/Files/" + FileUpload1.FileName));
      }
  }

答案 1 :(得分:1)

我看到了差异

string b = FileUpload2.FileName.ToString();
File2.PostedFile.SaveAs(path + FileUpload2.FileName);

不应该

string b = File2.FileName.ToString();
File2.PostedFile.SaveAs(path + File2.FileName);

答案 2 :(得分:1)

有一个错误,你检查File2 fileupload控件,并在保存文件时编写FileUpload2.FileName。使用Server.MapPath方法给出正确的路径。

File2.PostedFile.SaveAs(Server.MapPath("~/path")+File2.FileName

这将是正确的代码

File2.PostedFile.SaveAs(Server.MapPath("~/path")+File2.FileName