Why not generate the thumbnail in the Graphic Upload handling script in the Admin control panel that the client uses?
My admin page is a long table with two columns in each row. The left column is the thumbnail for the images (each fish has 2 images). The right column is the details for that fish with the name, the latin name, the alternate names, description, the price if you bought that fish in a store, etc. That's the first form with "Update Fish" and "Delete Fish" as buttons.
I wish they'd turn on IMG code here. 🙁
http://www.feldoncentral.com/Sachs/fishpanel.gif
Then the second form is a "file" field to upload a file. In this case, it's two separate pictures they can upload so there's no thumbnails here.
So with this form, the user can create a new fish object, change the contents of an existing fish object (including uploading a new photo), or delete any fish object.
So what does this have to do with file uploads and thumbnails?
Because of the way the form is written, I do not have a generic image upload script. Instead, each spot to upload a file is tied to a specific object so I know what that object's name is.
So what I do is strip special characters and spaces out of the name and write the JPEG to the site. I am ignoring the filename they are giving me and renaming it to a controlled name.
So if the object name is "Serta Perfect Sleeper", I could write:
/images/SertaPerfectSleeper.jpg
and then with GD, create a thumbnail and write it to:
/images/thumbs/SertaPerfectSleeper.jpg
automatically in the Admin script. This way you never worry about not having a thumbnail. On your viewing pages, you would just refer to /images/<product name with spaces and special characters stripped>.jpg and /images/thumbs/<product name with spaces and special characters stripped>
This would also allow you to make the site more graphical with perhaps 2-3 random thumbnails (by getting a list of all the files in /image/thumbs/ and randomly picking 3 of them) on different pages throughout the site.