I had the same problem. I think that you will need to do user control for each download instance that you want on your page. An example of my working uploadify control:
//ascx <style type="text/css"> .hidden { display:none; } </style> <script src="/Uploadify/jquery.uploadify.v2.1.4.js" type="text/javascript"></script> <script src="/Uploadify/jquery.uploadify.v2.1.4.min.js" type="text/javascript"></script> <script src="/Uploadify/swfobject.js" type="text/javascript"></script> <link href="/Uploadify/uploadify.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $(document).ready(function () { var obj = document.getElementById('<%= this.fileInput.ClientID %>'); $(obj).uploadify({ 'uploader': '/uploadify/uploadify.swf', 'script': '/_handlers/Upload.ashx', 'cancelImg': '/uploadify/cancel.png', 'auto': true, 'multi': true, 'fileDesc': 'Image Files', 'fileExt': document.getElementById('<%= this.uTypes.ClientID %>').value, 'buttonText': 'Choose Images', 'folder': '/' + document.getElementById('<%= this.fileDest.ClientID %>').value, 'onAllComplete': function (event, queueID, fileObj, response, data) { var btn = document.getElementById('<%= this.uploadButton.ClientID %>').click(); } }); }); </script> <input id="fileInput" name="fileInput" type="file" runat="server" style="display:none" /> <input id="fileDest" name="fileDest" type="text" runat="server" style="display:none"/> <input id="uTypes" name="uTypes" type="text" runat="server" style="display:none"/> <asp:Button ID="uploadButton" runat="server" CssClass="hidden" OnClick="uploadButton_Clicked" CausesValidation="false"/>
This is the part of the code located behind the control; some of the parameters you see are passed outside
//Code behind public partial class UploadifyUpload : System.Web.UI.UserControl { private string fileDestination; public string FileDestination { get { return fileDestination; } set { fileDestination = value; } } private string uploadTypes; public string UploadTypes { get { return uploadTypes; } set { uploadTypes = value; } } public event EventHandler UploadButtonClicked; protected void Page_Load(object sender, EventArgs e) { string virtualPath = fileDestination.Replace(Request.PhysicalApplicationPath, "/"); virtualPath = virtualPath.Replace('\\', '/'); this.fileDest.Value = virtualPath; this.uTypes.Value = uploadTypes; } protected void uploadButton_Clicked(object sender, EventArgs e) { if (this.UploadButtonClicked != null) { this.UploadButtonClicked(this, new EventArgs()); } } }
I create the control this way and pass in a few variables. The file destination and click event are processed in the code of any page using the control.
<mgmtControls:UploadifyUpload ID="uploadifyUpload" runat="server" UploadTypes="*.jpg;*.png;*.gif;*.bmp;*.jpeg" /> this.uploadifyUpload.UploadButtonClicked += new EventHandler(UploadifyUploadClicked); this.uploadifyUpload.FileDestination = DocumentPath;
This works fine for me in Firefox, Chrome and IE, this should lead you in the right direction. You might want to add a default boot option if the user does not have flash installed.

source share