0

我正在使用 AJAX 控件工具包中的 asyncFileUpload 控件。我可以在后面的代码中对它进行类型转换并访问它,但它似乎没有抓取文件。这是它在页面中的嵌套方式:

<asp:LoginView ID="LoginView1" runat="server">
    <AnonymousTemplate>
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Repeater ID="rpt_items_loggedin" runat="server">
                   <ItemTemplate>
                   </ItemTemplate>
                </asp:Repeater>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btn_addwish" EventName="click" />
            </Triggers>
        </asp:UpdatePanel>
        <div class="wenslijst_preview">        
            <div class="fourfifth">
                <table>
                    <tr>
                       <td>
                          <asp:Label ID="lbl_img" runat="server" Text="Upload een afbeelding:" AssociatedControlID="fu_img_upload"></asp:Label>
                       </td>
                       <td>
                          <asp:AsyncFileUpload ID="asfu_img" runat="server" UploaderStyle="Traditional" />
                       </td>
                    </tr>
                </table>
            </div>
            <div class="fifth">
                <asp:ImageButton ID="btn_addwish" runat="server" CssClass="icon_img" 
                                        ImageUrl="images/add.png" onclick="btn_addwish_Click"/>
            </div>
        </div>  
     </LoggedInTemplate>
</asp:LoginView> 

这就是我在后面的代码中处理它的方式。当我调试时,我看到 AsyncFileUpload 控件没有获取任何数据:

protected void btn_addwish_Click(object sender, ImageClickEventArgs e)
{
        AjaxControlToolkit.AsyncFileUpload f = new      AjaxControlToolkit.AsyncFileUpload();
        f = (AjaxControlToolkit.AsyncFileUpload)(this.LoginView1.FindControl("asfu_img"));
        Label l = new Label();
        l = (Label)(this.LoginView1.FindControl("lbl_img_feedback"));
        string filePath = "";
        if (f.HasFile)
        {
            try
            {
                string fileName = DateTime.UtcNow.Ticks + "_" + cId;
                filePath = "images/userimg/" + fileName;
                f.SaveAs(Server.MapPath(filePath));
                l.Text = filePath;
            }
            catch (Exception ex)
            {
                l.Text = "Deze foto kon niet worden geuploaded. " + ex.Message;
            }
        }
    }

如果您需要查看更多代码或信息,请告诉我!

4

2 回答 2

1

确保带有 asyncfileupload 控件的用户控件未异步加载,例如通过 Response.Redirect("pageWithUploadControl")。

您是否处理过 FileUploadComplete 事件并检查 AsyncFileUploadState 是否为 Success?

还尝试更改更改表单的编码类型:

<form id="form1" enctype="multipart/form-data" runat="server">
于 2012-12-15T13:25:34.740 回答
1

在我看来, btn_addwish 是您要用于上传文件的按钮,如果是这种情况,那么您的问题是当执行 f.Hasfile 时,上传还没有完成,因此,它没有有一个文件。尝试使用 UploadedComplete 事件或其他控件来检查 hasfile。

于 2012-12-15T12:23:45.647 回答