I have a user control with a updatepanel, script manager and a asyncfileupload control.
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:ScriptManager ID="ScriptManager2" runat="server" ></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<cc1:AsyncFileUpload ID="AsyncFileUpload2" runat="server" />
<asp:LinkButton id="lbSubmitOrder" runat="server" title="Submit Order Request" class="btn_blue_dynamic_med"/>
</ContentTemplate>
</asp:UpdatePanel>
In my code behind:
Dim path As String = Server.MapPath("~/temp/test.tmp")
AsyncFileUpload2.SaveAs(path)
In my AsyncFileUpload2 object the filename is nothing. I can’t seem to get a refernce to the file that is supposed to be uploaded.
-Nate
UPDATE
I’ve added
Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsyncFileUpload1.UploadedComplete
If e.state = AjaxControlToolkit.AsyncFileUploadState.Success Then
'....'
Else
showErrorMessage(e)
End If
End Sub
I can’t hit a break point at the “if” statement after I choose a file. I guess there is something wrong on my page with how ajax is working? Not sure what it is though.
FIXED!
I was displaying the ajax upload box via a radio button with a visible=true/false div. The answer told me that the control has to be there the page loads. I took away the div and everything worked! I will now do the show/hide through jquery (which I should have done in the first place).
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Make sure that the usercontrol with asyncfileupload control is not loaded asynchronously, for example via Response.Redirect(“pageWithUploadControl”).
Have you handled the FileUploadComplete Event and checked if AsyncFileUploadState is Success?
Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsyncFileUpload1.UploadedComplete
If e.state = AjaxControlToolkit.AsyncFileUploadState.Success Then
'....'
Else
showErrorMessage(e)
End If
End Sub
Private Sub showErrorMessage(ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs)
Dim message As String = String.Empty
Select Case e.statusMessage
Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.EmptyContentLength
message = "Empty content length!"
Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.FileNull
message = "Fill NULL!"
Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.InputStreamNull
message = "Input Stream NULL!"
Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.NoFileName
message = "No File Name!"
Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.NoFiles
message = "No Files!"
End Select
LblMessage.Text = message
End Sub
Try to change change the enctype of your form:
<form id="form1" enctype="multipart/form-data" runat="server">
Method 2
Hi you can do it by using OnUploadedComplete="AsyncFileUploadPDF_UploadedComplete"
in .cs file add
protected void AsyncFileUploadPDF_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
if (AsyncFileUploadImage.HasFile)
{
Session["AsyncFileUploadPDF"] = AsyncFileUploadImage;
}
}
and you can get data from session where ever you want as I get on click event of button
protected void btnSaveParts_Click(object sender, EventArgs e)
{
AsyncFileUploadPDF = (AsyncFileUpload)Session["AsyncFileUploadPDF"];
PdfFileName = AsyncFileUploadPDF.FileName;
}
Method 3
In case this helps someone, I fixed my problem by adding the following to the form tag:
enctype="multipart/form-data" method="post"
Method 4
I was having the same problem, read and tried countless posts on how to fix it (obviously a lot of people are having this issue) but nothing worked. Until I replaced the ScriptManager with the ToolkitScriptManager
Change:
<asp:ScriptManager ID="ScriptManager2" runat="server" ></asp:ScriptManager>
with:
<cc1:ToolkitScriptManager ID="ScriptManager2" runat="Server" />
I am not sure if this is requirement on the latest tool kit (December 2013), but it worked for me. Hopefully it will help someone else too.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0