2012-07-10 47 views
2

我在我的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> 
+0

我们可能会需要看到更多代码知道肯定。你能用最少的HTML和最少的服务器端代码重现这一点,并共享更完整的代码库吗?我的第一个猜测是,出于某种原因,文件上传不是表单的一部分。或者,如果您使用的是Web窗体,也许您正在重置'Page_Load'中的控件。 – David 2012-07-10 09:13:09

+0

我们可以看到更多的代码吗? – JohnnBlade 2012-07-10 09:13:13

+1

_Minimal_ HTML和_minimal_服务器端代码... =) – 2012-07-10 09:19:13

回答

1

我看到一个差异

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

岂不是

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

并坚持使用指导方针/公约 – JohnnBlade 2012-07-10 09:16:01

1

有一个错误,你检查文件2 FileUpload控件和同时保存您写入FileUpload2.FileName的文件。使用Server.MapPath方法提供正确的路径。

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

这将是正确的代码

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

2

MSDN页:

以下ASP.NET控件不 部分页面更新兼容,因此不能在UpdatePanel中工作ROL:

  • FileUpload,并且当它们被用于上载文件作为异步回发的一部分HtmlInputFile控件。

  • -

要使用FileUploadHtmlInputFile控制一个 的UpdatePanel控制的内部,设置用于提交文件是用于面板一个PostBackTrigger控制回发控制。

所以你需要设置触发器属性回发控制(按钮等)

例子:

<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)); 
     } 
    } 
相关问题