2012-07-10 59 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)); 
     } 
    } 
相關問題