【问题标题】:Upload a file to server automatically inside a update panel in asp.net website在 asp.net 网站的更新面板内自动将文件上传到服务器
【发布时间】:2012-01-08 19:07:31
【问题描述】:

我在更新面板中有一个文件上传,以及一个将文件上传到服务器的上传按钮。是否可以在不单击上传按钮的情况下上传文件? 我想删除上传按钮并在从用户机器中选择文件后立即上传文件。或者,有一个 4 秒的计时器,然后调用 upload_click 来检查文件上传是否有文件。如果没有更新面板内的按钮,我该怎么做?

<asp:UpdatePanel ID="UP_DDL" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
    <ContentTemplate> 
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="Upload" OnClick="Upload_Click" runat="server" Text="Upload" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="Upload"/>
    </Triggers>
</asp:UpdatePanel>

protected void Upload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        //create the path to save the file to     
        string fileName = Path.Combine(Server.MapPath("~/Bulk Upload"), FileUpload1.FileName);
        //save the file to our local path  
        FileUpload1.SaveAs(fileName);
    }
}

【问题讨论】:

    标签: c# asp.net ajax updatepanel ajaxcontroltoolkit


    【解决方案1】:

    我相信您可以在 HTML INPUT File 元素上使用 any of the events 来启动完整的回帖,这是您自动上传文件所需要的全部内容。

    Google,至少在标准界面上,使用某种 Flash 插件来完成您想要的。

    可能有一些其他的 jQuery 插件可以提供这种开箱即用的功能。例如,This one 似乎可以做到。

    【讨论】:

      【解决方案2】:

      您需要使用一些客户端代码来模拟点击,例如使用 Javascript 中的submit - 我相信至少有一个著名的浏览器不支持这一点,IE。

      否则,您可以使用 jQuery ajax 调用静态 Web 方法,当文件上传控件的值发生变化时,这些方法会在后台动态上传。

      【讨论】:

        【解决方案3】:

        您可以使用display:none 内联样式隐藏上传按钮,并将以下代码添加到Page_PreRender 方法:

        FileUpload1.Attributes["onchange"] = ClientScript.GetPostBackClientHyperlink(Upload, "");
        

        或者考虑使用 AjaxControlToolkit 中的 AsyncFileUpload 控件

        【讨论】:

        • 如何只更新更新面板,使整个页面不刷新
        • 您不能使用标准的 FileUpload 控件来执行此操作,因为它需要完整的回发。
        • 我尝试调用 __doPostBack('', "");在我的 javascript 中 FileUpload Control 的 onchange 事件中。我确实收到了回发事件,但 PostedFile 属性为空,并且 HasFile = false。我第二次选择文件时它工作正常!!
        猜你喜欢
        • 2016-03-17
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 2015-04-06
        • 2020-02-28
        • 2011-06-24
        • 2017-03-19
        • 1970-01-01
        相关资源
        最近更新 更多