The issue is that you cannot set the value of an input type="file" element for security reasons. You don't want evil websites trying to upload your C:\whateverfiletheywant.dat
So you have to do the upload in the popup into a temp upload directory and send the filenames the user uploaded to the master form via javascript (window.opener)
I have done this many times.
Something similiar to what I do if I have to upload something in a popup.
List<string> filesUploaded = new List<string>();
foreach (HttpPostedFile file in HttpContext.Current.Request.Files)
{
if (file.ContentLength <= 0)
continue;
string filename = String.Format("{0}.jpg",Regex.Replace(Guid.NewGuid().ToString(), "[^A-Za-z0-9]*", String.Empty));
file.SaveAs(Path.Combine(Server.MapPath("/upload/temp/"), filename));
filesUploaded.Add(filename);
}
Response.Write(String.Format("<{0}>window.opener.FilesUploaded([{1}]);</{0}>","script", String.Join(",",filesUploaded.ToArray()).TrimEnd(new char[]{','})));
*note ... asp doesnt like script tags in your c# code, so thats why the script keyword is in the String.Format