I am trying to implement the AjaxUploadControl functionality on my site but it does not fire the OnUploadComplete method. Instead, it simply says file uploaded 100%, but the file is not in the specified folders. I have set breakpoints in the OnUploadComplete method and have been able to determine that this method is never being reached. It almost seems to be jumping into an infinite loop as the Cancel button displays, but none of the buttons on the screen are clickable once an attempt has been made to upload a file.
The .aspx page:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>
<div>
<ajaxToolkit:AjaxFileUpload ID="ajaxUpload1" runat="server" OnUploadComplete="ajaxUpload1_OnUploadComplete" />
</div>
</form>
</body>
</html>
The codebehind file:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class AjaxTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ajaxUpload1_OnUploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
string filePath = "~/SiteImages/" + e.FileName;
ajaxUpload1.SaveAs(MapPath(filePath));
}
}
Help is greatly appreciated!
I discovered the problem that I am having. I was trying to implement the functionality in a website versus a web app. I created a test web app platform and it worked flawlessly. I am a beginner to AJAX and did not realize that this would cause issues, however, does anyone know a solution to get this functionality to work in a website. I'm afraid that there is too much to easily port over to web app at this time.
If you don't set the right enctype and method UploadedComplete will never fire.try adding enctype="multipart/form-data" into your form tag.e.g.<form id="form1" runat="server" enctype="multipart/form-data" method="post">
Code behind:
Code inline:
Hope it helps.
The actual problem you were having is that you needed a HTTP handler in your web.config
I had the very same issue (red error on upload, event in .cs file not firing at all ), now resolved by adding that to my web.config
The property is
OnClientUploadComplete
, notOnUploadComplete
.Refer to this.
KINDLY FOLLOW THE FOLLOWING RULES (.NET 4.0) OR (.NET 4.5 FRAMEWORKS) MAKE SURE FOLLOWING STEPS WERE USED IN YOUR PROJECT
HTML PAGE (MUST BE LIKE THIS)
IMPORTENT WEB.Config SHOULD BE (HAVING FOLLOWING TAGS for .net 4.5)
<system.webServer> <handlers> <add name="aa" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" /> </handlers> </system.webServer>
IMPORTENT WEB.Config SHOULD BE (HAVING FOLLOWING TAGS for less than 4 or 4.5)
<httpHandlers> <add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/> </httpHandlers>