2010-12-16 91 views
4

我正在使用ajax工具包中的asyncfileupload ajax插件保存文件,当我保存它时,我正在更改文件名(以避免具有相同名称的多个文件)。获取使用ajax AsyncFileUpload保存的文件的新文件名?

上传文件后,用户需要知道文件的名称,因此我在onclientuploadcomplete事件上使用了此JavaScript代码。

function UploadComplete(sender, args) { 
    alert(args.get_fileName()); 
} 

这有效,除了它获得旧名称,而不是新名称(这是确定的服务器端)。有什么办法让它返回新名称而不是旧名称?或者任何解决方法来实现这一目标?

这是我在获得新的文件名后面的代码代码:

string filename = DateTime.Now.ToString("dMyHmsf") + e.filename; 
string strPath = MapPath("~/SavedImages/") + filename;  
AsyncFileUpload1.SaveAs(strPath); 

回答

1

如何在写代码隐藏文件名的hiddenfield和阅读在你的客户方代码的价值?

+0

好主意,但不会说需要回传? – Sam 2010-12-17 04:43:22

3

我得到的答案从http://forums.asp.net/post/4139037.aspx它为我...从

复制的代码有:

<asp:ToolkitScriptManager runat="server"> 
    </asp:ToolkitScriptManager> 


<!--This script snippet must be located below the ScriptManager--> 
    <script type="text/javascript"> 
     Sys.Extended.UI.AsyncFileUpload.prototype.newFileName = null; //I did not use this line 
     function uploadcomplete(sender, e) { 
      alert(sender.newFileName); 
     } 
    </script> 


    <asp:AsyncFileUpload ID="AsyncFileUpload1" OnClientUploadComplete="uploadcomplete" 

     runat="server" OnUploadedComplete="AsyncFileUpload1_UploadedComplete1" /> 

后面的代码:

protected void AsyncFileUpload1_UploadedComplete1(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
{ 
    ScriptManager.RegisterClientScriptBlock(this, 
     this.GetType(), "newfile", 
     "window.parent.$find('" + AsyncFileUpload1.ClientID + "').newFileName='newfile.jpg';", true); 
}