Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net:AjaxFileUpload OnUploadComplete事件_C#_Asp.net - Fatal编程技术网

C# asp.net:AjaxFileUpload OnUploadComplete事件

C# asp.net:AjaxFileUpload OnUploadComplete事件,c#,asp.net,C#,Asp.net,我正在使用Visual Studio 2013和AjaxControlToolkit v15.0开发简单的拖放多文件上传程序。我有AjaxFileUpload控件,但我注意到只有一个文件在浏览器上显示为已上载 另外,我看到OnUploadComplete事件没有触发。我通过在事件中插入警报来测试该事件,但它不会运行。上传的文件也不会显示在项目或数据库表中 这是我的代码: .aspx文件 <form id="form1" runat="server"> <asp:Scri

我正在使用Visual Studio 2013和AjaxControlToolkit v15.0开发简单的拖放多文件上传程序。我有AjaxFileUpload控件,但我注意到只有一个文件在浏览器上显示为已上载

另外,我看到OnUploadComplete事件没有触发。我通过在事件中插入警报来测试该事件,但它不会运行。上传的文件也不会显示在项目或数据库表中

这是我的代码:

.aspx文件

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div  align="center">
        <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server"  MaximumNumberOfFiles="10" OnUploadComplete="File_Upload" Width="500px" Mode="Auto" />
    </div>
</form>

.aspx.cs文件

protected void File_Upload(object sender, AjaxFileUploadEventArgs e)
{
    SqlConnection con = new SqlConnection(abc);
    try {
        string filename = Path.GetFileName(e.FileName);
        string strDestPath = Server.MapPath("~/Documents/");

        SqlCommand cmd = new SqlCommand("INSERT INTO upload (name, path) VALUES(@FileName, @FilePath)");

        cmd.Parameters.AddWithValue("@FileName", filename);
        cmd.Parameters.AddWithValue("@FilePath", "Documents/" + filename);

        con.Open();

        cmd.ExecuteNonQuery();
        con.Close();

        //Save file to project
        AjaxFileUpload1.SaveAs(@strDestPath + filename);
    }
    catch (Exception er) 
    { 
        Response.Write("<script language='javascript'> alert(' problem');</script>");   
    }
    finally { con.Close(); }     
}
受保护的无效文件\u上载(对象发送方,AjaxFileUploadEventArgs e)
{
SqlConnection con=新的SqlConnection(abc);
试一试{
字符串文件名=Path.GetFileName(e.filename);
字符串strdespath=Server.MapPath(“~/Documents/”);
SqlCommand cmd=newsqlcommand(“插入到上载(名称、路径)值(@FileName、@FilePath)”);
cmd.Parameters.AddWithValue(“@FileName”,FileName);
cmd.Parameters.AddWithValue(“@FilePath”,“Documents/”+文件名);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
//将文件保存到项目
AjaxFileUpload1.SaveAs(@strdespath+filename);
}
捕获(异常er)
{ 
回答。写(“警报(‘问题’);”;
}
最后{con.Close();}
}
web.config

<system.web>
    <compilation debug="true" targetFramework="4.5">
        <assemblies>
            <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </assemblies>
    </compilation>
    <httpHandlers>
        <add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
    </httpHandlers>
    <httpRuntime targetFramework="4.5"/>
</system.web>

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
        <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
    </handlers>
</system.webServer>


有什么解决方案吗?

我的解决方法:我在所有AjaxFileUpload控件上创建了一个名为“data upload type”的数据属性,并将其设置为该类型的名称(我使用上载类型来了解如何处理文件)。然后我设置客户端调用以获取该值,并设置具有相同值的cookie。cookie在服务器端函数上接收,我根据接收到的值进行分支

以下是一个例子: 这是我的通用客户端启动上载:

函数启动加载(发送器、参数){
var t=$(sender.\u元素).attr('data-upload-type');
document.cookie='upload type='+$(sender._元素).attr('data-upload-type')+';';
}
我的页面代码删除其中一个Ajax控件:


然后在服务器端上传调用中,只需检查Response.Cookies(“上传类型”)。工作起来很有魅力

重试OnClientUploadComplete事件。OnClientUploadComlete事件无法解决问题:(