2011-11-29 68 views
3

我在更新面板中有一个文件上传,还有一个上传按钮,将文件上传到服务器。是否可以上传文件而不点击上传按钮? 我想从用户机器中选择文件后立即删除上传按钮并上传文件。或者,有一个4秒的计时器,然后调用upload_click来检查文件上载是否有文件。如何在没有更新面板中的按钮的情况下执行此操作?在asp.net网站的更新面板中自动上传一个文件到服务器

<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); 
    } 
} 
+0

就像Gmail中上传 – Mark

回答

0

您将需要模仿点击一些客户端代码,如使用从Javascript submit - 而这并不是由至少一个显着的浏览器的支持,我相信,IE浏览器。

否则,您可以使用jQuery ajax调用静态Web方法,该方法在文件上传控件的值发生更改时可以在后台进行上传。

1

我相信你可以使用any of the events的HTML输入文件元素火了一个完整的回传,这是所有你为了自动上传文件的需要。

谷歌至少在标准接口上使用某种Flash插件来完成你想要的功能。

可能还有一些jQuery插件可以提供这种功能。例如,This one似乎这样做。

+0

您发布“这个链接一个“不起作用。 – JonH

0

您可以隐藏与display:none内嵌样式上传按钮,添加以下代码Page_PreRender方法:

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

或者考虑使用AsyncFileUpload控制从AjaxControlToolkit

+0

如何更新更新面板,使整个页面不刷新 – Mark

+0

由于需要完整回发,因此无法使用标准FileUpload控件执行此操作。 –

+0

我试图调用__doPostBack('<%= btnUpload.ID%>',“”);在我的JavaScript中的FileUpload控件的onchange事件。我确实得到回发事件,但PostedFile属性为null,并且HasFile = false。 它第二次选择文件时工作正常! –

相关问题