2

asp.netページにFileUploadコントロールがあり、ホスト上の任意のフォルダーに画像をアップロードする必要があります。ファイルがあると、アップロードが開始されるという条件を設定します。これはコードです。

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

しかし、条件が真になることはありません。そのページに他に2つのFileUploadがあります。これらは正常に機能しています。しかし、これは正常に機能しておらず、条件は常にfalseです。私は何をすべきか?

これは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>
4

3 に答える 3

2

MSDNページから:

次のASP.NETコントロールは、ページの一部の更新と互換性がないため、UpdatePanelコントロール内で機能するようには設計されていません。

  • FileUploadHtmlInputFile非同期ポストバックの一部としてファイルをアップロードするために使用されるタイミングを制御します。

  • -

UpdatePanelコントロール内 でFileUploadまたはコントロールを使用するには、ファイルを送信するポストバックコントロールをパネルのコントロールとして設定します。HtmlInputFilePostBackTrigger

したがって、ポストバック制御(ボタンなど)のTriggersプロパティを設定する必要があります

例:

<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));
      }
  }
于 2012-07-10T09:35:38.227 に答える
1

違いがわかります

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

そうではないでしょうか

string b = File2.FileName.ToString();
File2.PostedFile.SaveAs(path + File2.FileName);
于 2012-07-10T09:14:22.010 に答える
1

間違いがあります。File2 ファイルアップロード コントロールを確認し、ファイルの保存中に FileUpload2.FileName を書き込みます。Server.MapPath メソッドを使用して正しいパスを指定します。

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

これが正しいコードになります

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

于 2012-07-10T09:14:40.803 に答える