获取使用ajax AsyncFileUpload保存的文件的新文件名?

时间:2010-12-16 23:15:27

标签: c# asp.net ajax asyncfileupload

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

上传文件后,用户需要知道该文件的名称,因此我在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);

2 个答案:

答案 0 :(得分: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); 
}

答案 1 :(得分:1)

如何将文件名写入代码隐藏中的隐藏字段并在客户端代码中读取该值?