void ReceivedFile(string sendingControlID)
{
AsyncFileUploadEventArgs eventArgs = null;
_lastError = String.Empty;
if(this.Page.Request.Files.Count > 0) {
HttpPostedFile file = null;
if(sendingControlID == null || sendingControlID == String.Empty) {
file = this.Page.Request.Files[0];
} else {
foreach(string uploadedFile in this.Page.Request.Files) {
var fileToUse = uploadedFile;
var straggler = "$ctl02";
if(fileToUse.EndsWith(straggler))
fileToUse = fileToUse.Remove(fileToUse.Length - straggler.Length);
if(fileToUse.Replace("$", "_").EndsWith(sendingControlID)) {
file = this.Page.Request.Files[uploadedFile];
break;
}
}
}
if(file == null) {
_lastError = Constants.Errors.FileNull;
eventArgs = new AsyncFileUploadEventArgs(
AsyncFileUploadState.Failed,
Constants.Errors.FileNull,
String.Empty,
String.Empty
);
OnUploadedFileError(eventArgs);
} else if(file.FileName == String.Empty) {
_lastError = Constants.Errors.NoFileName;
eventArgs = new AsyncFileUploadEventArgs(
AsyncFileUploadState.Unknown,
Constants.Errors.NoFileName,
file.FileName,
file.ContentLength.ToString()
);
OnUploadedFileError(eventArgs);
} else if(file.InputStream == null) {
_lastError = Constants.Errors.NoFileName;
eventArgs = new AsyncFileUploadEventArgs(
AsyncFileUploadState.Failed,
Constants.Errors.NoFileName,
file.FileName,
file.ContentLength.ToString()
);
OnUploadedFileError(eventArgs);
} else if(file.ContentLength < 1) {
_lastError = Constants.Errors.EmptyContentLength;
eventArgs = new AsyncFileUploadEventArgs(
AsyncFileUploadState.Unknown,
Constants.Errors.EmptyContentLength,
file.FileName,
file.ContentLength.ToString()
);
OnUploadedFileError(eventArgs);
} else {
eventArgs = new AsyncFileUploadEventArgs(
AsyncFileUploadState.Success,
String.Empty,
file.FileName,
file.ContentLength.ToString()
);
if(_persistFile) {
GC.SuppressFinalize(file);
PersistentStoreManager.Instance.AddFileToSession(this.ClientID, file.FileName, file);
} else {
_postedFile = file;
}
OnUploadedComplete(eventArgs);
}
}
}