/// <summary>
        /// Handles the Click event of the btnExportData control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void btnExportData_Click(object sender, EventArgs e)
        {
            string backupFilename = "GalleryServerBackup_" + DateTime.Now.ToString("yyyy-MM-dd_HHmmss", CultureInfo.InvariantCulture);

            IBackupFile bak = new BackupFile();

            bak.IncludeMembershipData = chkExportMembership.Checked;
            bak.IncludeGalleryData    = chkExportGalleryData.Checked;

            var galleryData = bak.Create();

            IMimeType mimeType = Factory.LoadMimeType("dummy.zip");

            int bufferSize = AppSetting.Instance.MediaObjectDownloadBufferSize;

            byte[] buffer = new byte[bufferSize];

            Stream stream = null;

            try
            {
                // Create an in-memory ZIP file.
                stream = ZipUtility.CreateZipStream(galleryData, backupFilename + ".xml");

                // Send to user.
                Response.AddHeader("Content-Disposition", "attachment; filename=" + backupFilename + ".zip");

                Response.Clear();
                Response.ContentType = (mimeType != null ? mimeType.FullType : "application/octet-stream");
                Response.Buffer      = false;

                stream.Position = 0;
                int byteCount;
                while ((byteCount = stream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    if (Response.IsClientConnected)
                    {
                        Response.OutputStream.Write(buffer, 0, byteCount);
                        Response.Flush();
                    }
                    else
                    {
                        return;
                    }
                }
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }

                Response.End();
            }
        }