Contact
Send mail to the author(s) Email Me

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Sign In
Navigation

Tag Cloud
.NET Framework (31) AJAX (9) ASP.NET (16) ASP.NET MVC (3) C# (32) Cloud (2) Database (6) Dev Community (2) Dev Tools (5) Enterprise Library (1) Futures (2) General (6) Javascript (7) LINQ (2) Mobile (1) MSDTC (5) Quotes (3) SQL (3) Transactions (4) Visual Studio (3) WAS (2) WCF (19) WIF (1)

Archive
<November 2006>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Categories

Blogroll
Home Feed your aggregator (RSS 2.0)
# Sunday, November 05, 2006

The starter kit already allowed individual file upload, and batch upload from a directory which requires files to be moved to Upload directory by FTP.  The starter kit also stores the images in the database. While I prefer this method for most files, I don't prefer it for images. I changed a few methods to store the images in an images folder, and modified the image serving handler accordingly.  The album page load time is a fraction of what it was with images in the database.

I also created an XP Publishing Wizard that allows any user with credentials to create/choose an album, and upload images from Windows XP. The beauty of the XPPW is that it can resize the images before uploading. That way all of us with 10 megapixel cameras no longer have to spend any extra time resizing to prevent reaching a web host storage quota.

A few articles helped me figure this stuff out:

Creating the wizard was easy enough.  You first need to create a registry entry in the following format:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\PublishingWizard\PublishingWizard\Providers\Your Photo Gallery]
"displayname"="Your Photo Gallery"
"description"="Online Photo Albums"
"href"="http://www.yoursite.net/XPPublish.aspx"
"icon"="http://www.yoursite.net/favicon.ico"

Next is a single aspx page that accepts the files.  The page handles user login, album creation/selection, and accepts multiple files in a single form post.  All the hard work is done by some javascript methods that handle the XML sent from Windows XP.  The javascript looks like this:

        <script language='javascript'>
            function startUpload()
            {
                var xml = window.external.Property("TransferManifest");
                var files = xml.selectNodes("transfermanifest/filelist/file");
                var albumId = document.getElementById("Album").value;

                for (i = 0; i < files.length; i++)
                {
                    var postTag = xml.createNode(1, "post", "");
                    postTag.setAttribute("href", "http://yoursite.net/XPPublish.aspx");

                    postTag.setAttribute("name", "userpicture");

                    var dataTag = xml.createNode(1, "formdata", "");
                    dataTag.setAttribute("name", "MAX_FILE_SIZE");
                    dataTag.text = "10000000";                    
                    postTag.appendChild(dataTag);
                    
                    var dataTag1 = xml.createNode(1, "formdata", "");
                    dataTag1.setAttribute("name", "btnUpload");
                    dataTag1.text = "Save";
                    postTag.appendChild(dataTag1);
                    
                    var dataTag2 = xml.createNode(1, "formdata", "");
                    dataTag2.setAttribute("name", "hidAlbumId");
                    dataTag2.text = albumId;
                    postTag.appendChild(dataTag2);

                    files.item(i).appendChild(postTag);
                }
                
                var uploadTag = xml.createNode(1, "uploadinfo", "");
                uploadTag.setAttribute("friendlyname", "Family Photo Gallery");
                var htmluiTag = xml.createNode(1, "htmlui", "");
                htmluiTag.text = "http://yoursite.net/Personal/Albums/Photos.aspx?AlbumID=" + albumId;
                uploadTag.appendChild(htmluiTag);

                xml.documentElement.appendChild(uploadTag);

                window.external.Property("TransferManifest") = xml;
                window.external.SetWizardButtons(true,true,true);
                document.getElementById("divContent").innerHtml = xml;
                window.external.FinalNext();
            }

            function OnBack()
            {
                window.external.FinalBack();
                window.external.SetWizardButtons(false,true,false);
            }

            function OnNext()
            {
                if (document.getElementById("divLogin"))
                {
                    document.getElementById("LoginArea_Login1_LoginButton").click();
                }
                else
                {
                    startUpload();
                }
            }

            function OnCancel()
            {
            }

            function window.onload()
            {
                window.external.SetHeaderText('Photo Gallery','Your Photos');
                window.external.SetWizardButtons(true,true,false);
            }
        </script>

In case you haven't seen the XP Publishing Wizard in action, check out these screenshots:

 

 

 

 

 

 

 

 

 

Sunday, November 05, 2006 9:35:38 PM (Eastern Standard Time, UTC-05:00)  #    Comments [6]   ASP.NET | Javascript  | 
# Saturday, November 04, 2006

I record only a few shows on my DVR.  While fast-forwarding through commercials during last night's Battlestar Galactica, I saw a familiar image and had to rewind.  Ahhh... and then it appeared as a voice said "Tonight's episode is brought to you by Microsoft Visual Studio 2005."  Seeing that made me feel twice as dorky for watching that show.

Saturday, November 04, 2006 4:13:48 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]   General  | 
# Tuesday, August 29, 2006
Tuesday, August 29, 2006 8:51:51 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]   .NET Framework | C#  | 
# Monday, August 28, 2006

The 2006 Jacksonville Code Camp was great. I spent the whole day in the Code Countdown room cranking our code for a worthy cause. Shawn Weisfeld, David Silverlight and I wrote a web app from scratch with ASP.NET for a non-profit organization in Pennsylvania. I'm happy that I was able to participate in the first Code Countdown, and help a non-profit organization. You can volunteer to help out in a similar way by checking out David Silverlight's site, www.nonprofitways.com.

Monday, August 28, 2006 8:53:50 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]   General  | 
# Tuesday, November 08, 2005

This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio 2005. VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy 'n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.

Tuesday, November 08, 2005 9:55:01 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]   .NET Framework | C# | Database  | 
# Tuesday, August 30, 2005

Rick Strahl delivered another excellent white paper. In addition to his white papers, he has one of the most readable and intelligent blogs on the web.

White paper: Past the AJAX Hype - some things to think about

Tuesday, August 30, 2005 8:57:57 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]   AJAX | ASP.NET | Javascript  | 
# Friday, August 12, 2005

Yesterday, S. Somasegar, Corporate Vice President, Developer Division (Microsoft) shared some fantastic news, in his blog, about a new language enhancement in C# 2.0. In addition to Generics, Anonymous Methods, Iterators, and Partial Types, we will now have nullable types. Also, more details on MSDN about nullable types

Friday, August 12, 2005 8:58:43 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]   .NET Framework | C#  | 
Copyright © 2010 Scott Klueppel. All rights reserved.