FileChucker

Uploader with Progress Bar,
File Manager & Multi-User Support

New!
FileChucker screenshot 1 of 3

FileChucker screenshot 2 of 3

FileChucker screenshot 3 of 3

Contents

About
Live Demo
Features
FAQ
Download
Instructions: Apache on Mac/Linux/BSD
Instructions: Apache on Windows
Instructions: IIS on Windows
Performance
Support
Changelog

About

FileChucker is an AJAX-based web application that lets you accept file uploads on your own website.  It's simple to install, packed with features, fully configurable, nice looking, and very handy for when you want to share files with anyone.  And during uploads FileChucker shows a progress bar & table, so the user knows how much time is left before the upload is complete.

FileChucker can also function as a full-fledged online file manager for your server: it can allow moving/renaming/deleting of uploaded files & folders right in the browser.  Of course these features are configurable and password-protectable so you can customize FileChucker however you'd like.

To top it all off, FileChucker works in all major browsers (Firefox, Safari, Google Chrome, IE, Opera), and runs on virtually any server, with no programming required!  It's a single Perl script, and most servers support Perl CGI scripts automatically; for the rare server that doesn't, Perl can usually be easily added.  If your site is more of a PHP site, don't worry: FileChucker will run just fine alongside your PHP scripts, and you can even integrate it into your existing framework with a PHP virtual() call, if you want to!

Live Demo

You can try out the FileChucker Live Demo right now.

Features

  • Share files that are too large for e-mail by simply uploading them and then sending the link to your friend
  • Real-time progress bar and time elapsed/remaining during uploads
  • Built-in password protection: two separate passwords allow "admin" and "member" access levels without usernames; or, integrate with UserBase or your site's existing login system
  • If you don't want to bother with passwords at all, FileChucker can also be configured to automatically create a private directory for each upload, perfect for single-use uploads; the private directory is optionally re-usable for new uploads by the user who created it
  • E-mail notification of new uploads; can be sent to the webmaster and/or to the person performing the upload
  • Create, move, rename, and delete files/folders on your server through the browser, functioning as a web-based FTP system or FTP replacement
  • Multiple folders/subfolders for uploads, optionally user-creatable
  • Can function as a photo gallery script, with automatic image thumbnailing, image rotation, and a grid-layout display of your photo albums and thumbnails
  • Supports custom folder permissions so you can specify read-only or read-write access for users/groups on a per-folder basis
  • Can automatically rename all uploaded files to remove any "unfriendly" characters, append a time/datestamp, or rename to a completely custom format that you specify
  • Logs information about each upload, like uploader's IP address, hostname, browser & operating system
  • You can configure unlimited custom form fields anywhere on the upload form, so your users can enter comments or information about the file(s) they're uploading; supports text fields, radio buttons, checkboxes, drop-down lists
  • Can integrate with your site's login framework to store each user's uploads in his own directory automatically, and after an upload, can redirect to a page that you specify
  • Restrict what kinds of files can be uploaded and/or displayed based on file extension
  • Has a built-in human test to prevent spambot abuse (sometimes called a CAPTCHA system; "CAPTCHA" is (TM) by Carnegie Mellon University)
  • Works on a standard server or a secure server (https://)
  • Supports i18n and l10n (internationalization and localization) in most areas of the application, so it can be translated into other languages by simply modifying the settings containing the text strings
  • Adjustable max upload size (in bytes), up to as large as your server can support (typically multiple gigabytes)
  • Adjustable user quotas
  • Can upload one or multiple files, up to whatever limit you specify
  • Fully customizable via preferences that you can adjust
  • Check out the preferences file in the trial version to see all the adjustable features and documentation.

Download

You can download the FileChucker trial version and install it on your site right now.  The trial is designed for you to test on your server before purchasing the full version.  The trial has limitations compared to the full version; the main limitations are:

  • after accepting an upload, it saves the file as an empty document (size 0 bytes) and automatically adds a serial number to the end of the filename.
  • only the progress bar itself is shown; progress table, elapsed/remaining time, upload speed, etc, are not shown
  • deleting files/folders has been disabled
  • creating new folders with the file-manager has been disabled

Prior to version 2.0, FileChucker was free for personal use, but as more and more people use it and request support & new features, it requires more and more of our development time and effort.  So we now charge a small fee for use on personal sites.

Purchase

To get the full version of FileChucker, please choose your license type below.

FileChucker Full Version:
Personal Website License: 1-site
$19.99
add to cart
Business Website License: 1-site
$39.99
add to cart
Business Website License: 3-site
$89.99
add to cart
Business Website License: 10-site
$249.99
add to cart
Instant credit card payments through PayPal.
No sign-up required!
FileChucker Installation Service:
Let us install it for you.
$29.99
add to cart

Quick Instructions for Most Servers (Apache on Linux, Mac OS X, BSD)

Unzip your filechucker.zip file, and then upload the contents of the www.example.com folder onto your website.  Then visit the following address, replacing example.com with your own domain name:

www.example.com/cgi-bin/filechucker.cgi

If that works, then FileChucker is installed properly.  You should now read the FAQ.

If nothing works, read the full instructions.

Quick Instructions for Apache-on-Windows Servers

If your server doesn't already have Perl installed, download and install the free ActivePerl.  You may need to reboot after installing it.  Open a command prompt and type   perl -v   and if you get some output about Perl and its version info, you should be all set.

If you had to install Perl, you may also want to install the DBD::MySQL Perl module (if you want to use any of FileChucker's optional database-based features), and the MIME::Lite module (if you want to use any of the email features), by opening the Run dialog or a command prompt and then typing ppm install DBD-mysql (or ppm install MIME-Lite).  Or you can run just the ppm command by itself to use the graphical installer.

Now follow the regular Apache instructions.

Quick Instructions for IIS-on-Windows Servers

If your server doesn't already have Perl installed, download and install the free ActivePerl.  You may need to reboot after installing it.  Open a command prompt and type   perl -v   and if you get some output about Perl and its version info, you should be all set.

If you had to install Perl, you may also want to install the DBD::MySQL Perl module (if you want to use any of FileChucker's optional database-based features), and the MIME::Lite module (if you want to use any of the email features), by opening the Run dialog or a command prompt and then typing ppm install DBD-mysql (or ppm install MIME-Lite).  Or you can run just the ppm command by itself to use the graphical installer.

Unzip your filechucker.zip file, then open the www.example.com folder and move the contents of the cgi-bin folder into the upload folder.  Then delete the cgi-bin folder.  Upload the "upload" folder onto your website, then visit the following address, replacing example.com with your own domain name:

www.example.com/upload/filechucker.cgi

If that works, then FileChucker is installed properly.  You should now read the FAQ.

If nothing works, read the full instructions.

Full Instructions for Most Servers (Apache on Linux, Mac OS X, BSD)

Also available: instructions for IIS/Windows and Apache/Windows
Want us to install it for you?  Just purchase the FileChucker Installation Package.  We also provide customization and integration services -- just ask!

Note I: Do not edit the filechucker.cgi file unless absolutely necessary; instead, edit filechucker_prefs.cgi for all your customizations.

Note II: if you are using Windows on your desktop, and when you open the *.cgi file, the lines all appear to be crunched together, try opening it in Wordpad (not Word) instead.  In Wordpad, save the file; this should fix the line-endings so the file's contents appear correctly in other editors like Notepad.

On your website:

  1. First, complete the quick instructions.
  2. Set the permissions on /cgi-bin/filechucker.cgi (aka, chmod it) to world-readable and world-executable, that is, a+rx or mode 0755.  Do NOT use 0777.
  3. Set the permissions on the /cgi-bin/encdata/ directory to world-readable, -writable, and -executable, that is, a+rwx or mode 0777.
  4. Set the permissions on the /upload/files/ directory to world-readable, -writable, and -executable, that is, a+rwx or mode 0777.
  5. Now visit yoursite.com/cgi-bin/filechucker.cgi in your browser and FileChucker should be working properly.
  6. If you get an Internal Server Error, it's most likely a permissions problem.  See this page for more details.
  7. Read the FAQ.

Now FileChucker is ready to run, and you can access it by going to yoursite.com/cgi-bin/filechucker.cgi (or yoursite.com/upload/ if your server supports it).

Full Instructions for Apache-on-Windows Servers

Also available: instructions for Apache/[Linux|Mac|BSD] and IIS/Windows
Want us to install it for you?  Just purchase the FileChucker Installation Package.  We also provide customization and integration services -- just ask!

Note I: Do not edit the filechucker.cgi file unless absolutely necessary; instead, edit filechucker_prefs.cgi for all your customizations.

Note II: if you are using Windows on your desktop, and when you open the *.cgi file, the lines all appear to be crunched together, try opening it in Wordpad (not Word) instead.  In Wordpad, save the file; this should fix the line-endings so the file's contents appear correctly in other editors like Notepad.

On your website:

  1. First, complete the quick instructions.
  2. Now visit yoursite.com/cgi-bin/filechucker.cgi in your browser and FileChucker should be working properly.
  3. If it doesn't execute or you get errors, you may need to change the first line of the filechucker.cgi file from #!/usr/bin/perl to either #!perl or #!c:\path\to\perl.exe
  4. If it doesn't execute or you get errors, you may need to rename the script and its prefs file from a .cgi extension to a .pl extension.
  5. If you get errors about FileChucker being unable to delete something from the encdata or files folder, you may need to set a "Delete" bit on the folder's properties.
  6. Read the FAQ.

Now FileChucker is ready to run, and you can access it by going to yoursite.com/cgi-bin/filechucker.cgi (or yoursite.com/upload/ if your server supports it).

Full Instructions for IIS-on-Windows Servers

Also available: instructions for Apache/[Linux|Mac|BSD] and Apache/Windows
Want us to install it for you?  Just purchase the FileChucker Installation Package.  We also provide customization and integration services -- just ask!

Note I: Do not edit the filechucker.cgi file unless absolutely necessary; instead, edit filechucker_prefs.cgi for all your customizations.

Note II: if you are using Windows on your desktop, and when you open the *.cgi file, the lines all appear to be crunched together, try opening it in Wordpad (not Word) instead.  In Wordpad, save the file; this should fix the line-endings so the file's contents appear correctly in other editors like Notepad.

On your website:

  1. First, complete the quick instructions.
  2. Now visit yoursite.com/upload/filechucker.cgi in your browser and FileChucker should be working properly.
  3. If it doesn't execute or you get errors, you may need to complete one or more of these steps (most are not necessary on most IIS servers, so try one at a time):

    Rename the script and its prefs file from a .cgi extension to a .pl extension.

    Change the first line of the filechucker.cgi file from #!/usr/bin/perl to either #!perl or #!c:\path\to\perl.exe

    For the /upload/encdata and /upload/files folders, do the following: right-click on the folder, choose Properties, and go to the Security tab.  Find or add the IUSR_computername account, and give it "Full Control".  This account is sometimes called the Internet Guest Account.

    Run the inetmgr command and change the CGI web service extension from "prohibited" to "allowed".

    Run the inetmgr command and right-click on the website and choose Properties.  Go to the "Home Directory" tab, then to "Application Settings", and set "Execute permissions" to "Scripts and Executables".

    Run the inetmgr command and go to "Application Settings" then "Configuration", and add an application extension for .cgi (and .pl) with the executable set to: C:\Perl\bin\perl.exe "%s" %s

    If you get errors about FileChucker being unable to delete something from the encdata or files folder, you may need to set a "Delete" bit on the folder's properties.

    Create the c:\temp\ folder if it does not exist; if this isn't possible, and you get errors or failures when you try to upload files, then set $PREF{disable_upload_hook} = 'yes' in filechucker_prefs.cgi.
  4. (Optional; recommended) You may want to disable directory-listing for your /upload/ directory; you can do this through inetmgr.
  5. (Optional; recommended) If your server runs PHP, then you should disable it for your /upload/files/ directory, so that visitors can't upload PHP applications and modify the files on your server.  (FileChucker does disallow the uploading and listing of dangerous file extensions including .php by default, but disabling PHP execution for your uploads folder will further strengthen your installation's security.)
  6. (Optional) To increase IIS's CGI timeout, which will prevent large uploads if set to a low value, you need to set the "CGITimeout" metabase value to a large number, like 5000 or 10000 or more.  There are several ways to adjust this value.  One is to use the Metabase Explorer, from the IIS Resource Kit.  Another is to run the inetmgr command, right-click "Local Computer", choose Properties, then check "Enable Direct Metabase Edit";  then edit the file c:\windows\system32\inetsrv\metabase.xml in a text editor (you may need to use Notepad, not Wordpad), find the CGITimeout setting, and change it to a larger value.
  7. (Optional) FileChucker's image features (thumbnails, rotation) require an image-processing library like GD or ImageMagick.  To install the GD Perl module, open a command prompt and run the command ppm install http://theoryx5.uwinnipeg.ca/ppms/GD.ppd or ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/GD.ppd one of which should work depending on your version of Windows and ActivePerl.

    To install ImageMagick, go to www.imagemagick.org and download & install the binary release for Windows.  Then read this FAQ item for instructions on setting $PREF{convert_command}.
  8. Read the FAQ.

Now FileChucker is ready to run, and you can access it by going to yoursite.com/upload/filechucker.cgi (or yoursite.com/upload/ if your server supports it).

Performance

First, it should be noted that FileChucker itself imposes no limits on the amount of data that can be transferred (except whatever limit you specify in your setting for $PREF{sizelimit}).  FileChucker also does not place any limit on the speed of an upload.  If you are having trouble with uploading large files, or with uploads going really slow, the problem is in your network, or somewhere else in your server's hardware or software configuration.  Many FileChucker users on many platforms (Windows, Linux, IIS, Apache, OS X Server) are uploading files sized in the hundreds of megabytes, so the problem is not within FileChucker.

In a test upload of a 700MB file across a 100mbit LAN, the transfer ran at about 5MB/sec, requiring about 2.5 minutes to complete.  After the actual data-transfer was complete, the server spent ~50 seconds processing the file (CGI.pm's internal processing) before the script finished running. (FileChucker now has the ability to avoid this extra processing time altogether, as long as your server is running a relatively recent Perl distribution.)  The server was a Dell Dimension 1100 desktop system, with an Intel Celeron 2.53GHz CPU (256 KB cache, 5061.56 bogomips), 512MB RAM, 1GB swap, and a standard 7200RPM ATA IDE disk.  The server was running Apache 2.0.54 with a fairly standard installation.  During the upload, the server's RAM and swap usage did not increase significantly (probably a few KB or a few tens of KB), because the uploaded file got streamed to disk (to a temporary file) by CGI.pm.  This is why the server needed to spend ~50 seconds processing the file after the upload was complete: it was decoding the raw POST data from the temporary file into the actual final destination file.  (Again, FileChucker no longer needs to do this.)

In a second test upload on the same server as above, a 1.4 gigabyte file took about 5 minutes to upload, and when the data finished transferring, the server spent just under 2 minutes doing POST-processing before the script finished. 

The one thing we've seen that's helped to increase performance during file-uploads (aside from faster hardware and/or a faster network link) is to make sure the server has a recent version of the CGI.pm Perl module. In FileChucker, if you enable the debugging PREFs, then visit your server's FileChucker installation in your browser and pass ?debug on the end of the URL, then view the page's source-code, at the bottom you'll see a bunch of debugging information inside of an HTML comment.  One of the items near the top of this info is the CGI version that your server is running.  The current version is somewhere around 3.20 or greater; if you're in the 2.xx series, or even the low 3.0x series, then upgrading your Perl installation (which will upgrade your CGI.pm module) may give you better performance during uploads.

If you want to upload files larger than 2 gigabytes, then you can't use Apache 1.3.x or 2.0.x.  You need to use Apache 2.2.x, as explained on the "New Features in Apache 2.2" page:

Large File Support

httpd is now built with support for files larger than 2GB on modern 32-bit Unix systems.  Support for handling >2GB request bodies has also been added.

Support 

If you need any help with FileChucker, please complete the following steps in order:

  1. Make sure you've followed the installation instructions.
  2. Make sure you've read the FAQ.
  3. If you're getting an Internal Server Error, read the Internal Server Error page.
  4. If you're getting errors about missing Perl modules, read the installing Perl modules page.
  5. The troubleshooting page has some FileChucker-specific solutions that may help.
  6. If you still need help, you can contact us.  Be sure to send us the full URL to the script on your server.

ChangeLog

v4.82 (20111026):

  • New $PREF{show_myaccount_link} setting for when integrated with UserBase; this is in addition to $PREF{show_login_link}, which is now a dedicated login/logout link (in previous versions, it changed to a My Account link when integrated with UB).

v4.81 (20111026):

  • New method for detecting when the upload is complete in the iframe, which eliminates a ~1-2 second delay at the end of uploads before the Upload Complete message is displayed, and which also allows us to detect and display any server errors that occur during an upload.
  • We now cache any environment variables received from PHP, so that we're able to use them during POSTs (e.g. uploads).
  • The get_userdir_from_username and get_userdir_from_email prefs have been replaced by enable_userdir_from_login_system and userdir_template, which now also supports including the user's email address and user ID within the userdir value.
  • New $PREF{uploadbutton_id} setting, for situations where you're integrating with an existing complex form where it'd be a hassle to change the CSS ID of the upload button, so you can adjust it in FileChucker instead.
  • New $PREF{ignore_image_resizing_errors} setting, to suppress errors during thumbnail generation, which, on a server with a properly-functioning image module/library, are generally only caused by the occasional corrupt image file, which we can't do anything about anyway, so displaying an error is largely pointless.
  • New $PREF{css_shared} setting, for CSS that is common to multiple Encodable apps.
  • Bugfix: on some servers, small uploads and/or slow connections result in the write-caching error being displayed when it doesn't actually apply, so we now wait until we're at least a few seconds into the upload before displaying it.
  • Bugfix: on some servers, at the end of an upload, the upload size would appear to revert to a very small value, causing the time displays on the upload progress table to freak out; we now ignore any decreasing values for the size, so this issue no longer occurs.
  • Bugfix: with custom folder permissions enabled, viewing the permissions would result in an error on Windows servers.
  • Prefs added:
    enable_userdir_from_login_system
    userdir_template
    uploadbutton_id
    ignore_image_resizing_errors
    css_shared
  • Prefs removed:
    get_userdir_from_username
    get_userdir_from_email

v4.80 (20111006):

  • Bugfix: when using the human test (aka CAPTCHA) feature, we'd eventually display an error when auto-deleting the old human test images, because of an incomplete directory check.

v4.79 (20111005):

  • Bugfix: when deleting a directory, we would display a MySQL error if custom folder permissions were not enabled.

v4.78 (20110929):

  • We now include the version number in the prefs file too, to make things easier for those with multiple installations, and during updates/moves, etc.

v4.77 (20110901):

  • Changelog coming soon.

v4.76 (20110715):

  • Changelog coming soon.

v4.75 (20110609):

  • New $PREF{show_keep_me_logged_in_checkbox_on_login_page} setting, in case you want to disable that checkbox, which was previously always shown.
  • New $PREF{ignore_chosen_subdir_during_upload_if_new_subdir_entered} setting, for situations where you want any new subdirs to be forced into the top level, instead of inside an existing subdir.
  • Bugfix: we were failing to store upload info into the database for file-less form submissions (if both of those option were enabled).

v4.74 (20110501):

  • Changelog coming soon.

v4.73 (20110326):

  • Changelog coming soon.

v4.72 (20110321):

  • Bugfix: when integrated with UserBase, and pulling the login_url value from the UserBase prefs file, we'd set it to the wrong value if it was still set to the default of $ENV{SCRIPT_NAME} (setting it to filechucker.cgi instead of userbase.cgi).

v4.71 (20110319):

  • Bugfix: the pagination links on the filelist page were supposed to be hidden when they weren't needed (i.e. when the number of items is less than your num-items-per-page setting), but that wasn't happening.
  • Bugfix: the filelist page was displaying a "Buy" header (which is part of an upcoming feature still under development) when it shouldn't have been.

v4.70 (20110313):

  • When integrated with UserBase, FileChucker can now set its own login_url pref from UserBase's prefs file.
  • More changelog items coming soon.

v4.69 (20110126):

  • We now reject form submissions without files (unless you've specified to allow such submissions) on the server-side as well as the client side, to stop spambots that POST directly to the script without using the frontend.
  • Bugfix: a change in the previous version contained a bug that resulted in spurious permissions errors when not using custom folder permissions.

v4.68 (20110123):

  • Changelog coming soon.

v4.67 (20101231):

  • Changelog coming soon.

v4.66 (20101116):

  • Download notification emails can now be sent to the person who originally uploaded the file, via the new %%uploader_email_address%% setting, as long as you've got the other required prefs set (namely an email address field on the upload form, which you've set to be stored in a database).
  • New set of file_links_in_ prefs (e.g. $PREF{file_links_in_emails_go_to}) in PREFs Section 11 to specify how the view/download links behave in various contexts.  You can choose from these options:

    viewer: FileChucker's slideshow-style viewer, with previous/next links, and web-sized versions of images, etc.

    landing_page: useful for public-download sites, with a configurable delay, etc.

    full_page: items that the browser can display are displayed standalone within the browser window/tab; this includes text and most images for example, as well as videos, as long as the browser has a video-playing plugin installed. Most such plugins will stream the video, so that it starts playing right away and downloads in the background. Other file types show an open/save dialog.

    script_download: all items get an open/save dialog.

    direct_download: like full_page, but using the direct path and filename to the item on the server, rather than going through the script. This will be internally overridden in some cases; see this FAQ item for details.
  • New set of _on_options_menu prefs to specify which of the above download methods appear on the "options" menu for each file on the download page.
  • New ?iframe=no URL variable to disable $PREF{use_iframe_for_upload} on a per-upload basis (mainly for debugging).
  • When setting cookies, we now specify the domain, and start it with a dot (after removing any "www"), in order to allow the cookies to be read from subdomains as well.  This should work around some potential issues on sites that allow both the www-version and the www-less-version of their domain but don't redirect one to the other.
  • The database viewer (for upload log page, etc) now has a View All link, to disable pagination and show every item in the list.
  • Bugfix: the database viewer (for upload log page, etc) was using the wrong arguments for the LIMIT clause (start and end, instead of start and count), resulting in strange results when viewing database tables with large numbers of records (basically, as you paginated through to the higher pages, they displayed more items-per-page than they were supposed to, and the counts were off).
  • Various other small bugfixes.
  • Prefs added:
    groups_allowed_to_view_actions_menu_on_filelist
    mimetype_for_mp4
    uploader_email_address_formfield_shortname
    file_links_in_uploadcomplete_page_go_to
    file_links_in_filelist_page_go_to
    file_links_in_optionsmenu_emaillink_go_to
    file_links_in_viewer_page_go_to
    file_links_in_landing_page_go_to
    file_links_in_emails_go_to
    viewer_link_on_options_menu
    full_page_link_on_options_menu
    full_page_link_on_options_menu___videos
    script_download_link_on_options_menu
    direct_download_link_on_options_menu
    email_link_on_options_menu
  • Prefs removed:
    enable_save_link
    filelist_pagination_links_template
    downloads_use_landing_page

v4.65 (20101018):

  • New $PREF{get_userdir_from_email} setting.
  • New $PREF{file_upload_field_label} setting, including support for different labels on different file fields in multi-file uploads.
  • New $PREF{hide_upload_form_folders_matching_this_regex} setting, to limit the list of subfolders the user can choose from.
  • New $PREF{hide_common_leading_path_on_upload_form_subdirs} setting, to shorten the entries in the subfolder drop-down when possible.
  • Renamed sizelimit_for_strangers to sizelimit_for_public.
  • New $PREF{show_bbcode_html_etc_on_uploadcomplete_page} setting to easily hide those items without having to edit the upload-complete page template.
  • New $PREF{mimetype_for_[ext]} settings, for serving downloads with the correct mime-type on servers where the MIME::Types Perl module is not available.
  • Removed some old prefs that have been deprecated by newer groups_allowed_to_* settings (show_link_to_uploads and upload_complete_page_links_to_files).
  • When looking for a userbase_prefs.cgi file to load, we now check the /login folder, for servers where it's installed that way.
  • For servers that set $ENV{REMOTE_ADDR} incorrectly (Yahoo so far), we now work around that.
  • Bugfix: the new viewer-mode page would display a broken image on servers where no image-resizing methods are available; now we display no image, just text.

v4.64 (20101006):

  • Renamed the call_filechucker.php file to call_fc.php to make it easier to type and to make instructions shorter; also edited its code to make it try two different methods of calling the filechucker.cgi script in case a given server only supports one or the other method; and updated the quick-instructions.txt file to briefly explain how to use this method of execution.

v4.63 (20101004):

  • In notification emails, any perfile form fields are now displayed in the file list section, rather than in the other (non-perfile) form fields section.
  • Any drop-down form fields created with the formfield_NN prefs can now use newlines, instead of "|||", as their value separator, which makes it much easier to create/maintain drop-downs with many possible values.
  • Bugfix: in notification emails, in our footer links, we were including the literal text 'auto' in place of the $PREF{here} value.
  • Bugfix: on the upload-complete page, when listing form field values, we were displaying "Field: : value" (double-colons) in some cases.
  • Bugfix: the new viewer-mode feature was ignoring $PREF{here} and always using the .cgi script filename in its URLs.

v4.62 (20100928):

  • New "viewer" mode for the Download page, so that clicking on a file will take you to a FileChucker page showing that item with previous/next links, and showing a nice web-sized version of the item if it's an image.
  • When using the download_links_go_through_FileChucker feature, we previously served all downloads with the application/octet-stream content type, causing most browsers to display just a "Save As" dialog.  We now use the MIME::Types Perl module and serve specific mime-types depending on the file extension, so that the browser can offer to display the download in an appropriate application in addition to just saving the file.
  • New $PREF{static_writable_directories_list} setting, for servers with huge numbers of subfolders that don't change, in which case we don't need to do the potentially-slow scanning of the uploads folder on every execution.
  • Adjusted some of the default CSS to make it easier to change the upload progress bar from centered to left-aligned.
  • There's now a [remove this file] link on the extra file fields on the upload form, in case a user for some reason doesn't feel comfortable simply leaving the extra field blank.
  • New $PREF{name_of_subfolder_for_thumbnails_etc} setting, with the eventual goal of moving all our miscellaneous subfolders (thumbnails, human-test images, temporary zip files used in multi-file downloads...) into it.
  • The upload-counter feature now goes through the formfield_NN prefs system, so that it's easier to access its value in notification emails, post-upload redirection pages, etc.
  • Added a new setting of 'auto' for $PREF{here}, which is also now the default.  So when you're using a shortcut /upload URL or you've embedded FileChucker into another page, it figures it out automatically.
  • Moved some prefs (human_test_image_directory stuff) from PREFs Section 02 down into PREFs Section Z: Misc Settings Not Usually Needed, and changed some of the code behind them to be smarter about automatically figuring out the right paths to use.
  • Improved the spacing between our pagination links.
  • In our database viewer, any columns specified as _viewer_hidden_columns are now skipped when a new record is being created.
  • Bugfix: the browser-side file extension filter wasn't working properly for file extensions that included regexes.
  • Bugfix: if using the custom_form_fields feature (rather than the built-in formfield_NN extra form fields feature), we were lumping perfile formfields in with non-perfile formfields.
  • Bugfix: when using enable_userdir_from_php_session__method1 or enable_username_from_php_session, depending on how your PHP/session-based login system handled logouts, we didn't always recognize them right away, instead pulling the login details from our own cache.
  • Bugfix: replaced raw ampersands with their proper HTML entities in a couple of spots, for increased HTML validation powers.

v4.61 (20100727):

  • Bugfix: when configuring features to be non-public, but not using a separate login system like UserBase, we had a missing ampersand that caused a redirection loop resulting in the internal login page failing to display.

v4.60 (20100529):

  • For uploaded images, we now automatically detect & display dimensions & resolution (on the file info page and in notification emails) if the server supports it.
  • Improved the documentation for the $PREF{enable_subdirs} setting in the prefs file, and we now automatically (re)enable this if the user has enabled userdirs, since they don't work without subdirs.
  • The $PREF{serial_is_userdir} setting now automatically enables the other prefs that it depends on, rather than listing them in the documentation and requiring you to manually enable them.
  • Disabled the blat email path by default, since hardly any servers have that installed, and it can make it harder to debug email issues on Windows servers.
  • Changed some of our CSS IDs (including title and intro) to more unique versions, to avoid having any sitewide stylesheets mess up our styling.
  • The $PREF{enable_custom_sql_commands} feature now supports UPDATE in addition to INSERT.
  • In date strings where we were using "%P" to get am/pm, we now use "%p" instead (which is the same but uppercase, i.e. AM/PM) because some Windows servers crash/hang when confronted with "%P".  No, really.
  • Various updates to our built-in database table viewer/editor (including presets for min/max values, min/max string lengths, and type checking; nicer visual styles in vertical display mode; ...).
  • We now specify our font size in points instead of ems, since the latter can result in tiny/huge text in situations where (for example) a sitewide stylesheet specifies that ALL tables should have a certain font size.
  • The tempfile used to track each upload's progress is now deleted at the end of the upload by the upload process, rather than by the process that displays the Upload Complete page.  This makes no difference in most installations, but can prevent these tempfiles from building up on servers where the Upload Complete page is not being used and where FileChucker's automatic periodic purging of these files does not occur for some reason.  In older versions this early deletion would have caused Javascript errors on the client-side at the end of an upload, but Javascript changes in newer versions should prevent that issue.
  • The different types of rows on the file list page (parent folder row, folder rows, file rows) now have unique CSS classes, in case you want to style them differently from each other.
  • The server information page now shows your server's MIME::Lite version, which can be useful in debugging email issues.
  • Renamed the $PREF{enable_manual_creation_of_new_subdirs_during_upload} setting to $PREF{show_the_create_new_subdir_field_on_upload_form} to make its purpose more clear.
  • The feature that allows you to use %DATE{%v} within other prefs, for inserting various kinds of date variables, now supports offsets, so for example you can use %DATE{%d}{now+5d} to mean "the date 5 days from now."
  • New $PREF{convert_upload_filenames_to_case} setting for converting all filenames to uppercase or lowercase upon upload.
  • The Upload Complete page now includes a hidden field containing the uploaded filename, for situations where you want to script other actions based on that.
  • New $PREF{upload_progress_bar_disabled} setting for servers with write-caching or other features that prevent the progress bar from working.
  • Form fields auto-included in notification emails are now displayed in the same order that they appear in the prefs file and on the upload form, rather than sorted alphabetically by shortname as before.
  • Improved autodetection of the server's DOCROOT on certain servers with strange configurations.
  • We now display a warning in the footer whenever $PREF{enable_debug} is turned on, since it can itself cause issues in some cases.
  • Bugfix: upon logout we redirected to a "You are logged out" page, but this was displayed based solely on the query-string, so a logged-in user navigating to this page manually (or getting auto-redirected to it for whatever reason) would see the "You are logged out" message even though he's actually logged in.  The logged-out page now auto-redirects to the main page if the user is actually logged in.
  • Bugfix: when using the _is_group_master feature for grouped checkboxes on the upload form, along with $PREF{store_upload_info_in_database}, we failed to auto-create a database column for the group, so it never got stored; so this grouped checkboxes feature only worked if you'd manually created the database column beforehand.
  • Bugfix: setting a $PREF{after_upload_redirect_to} URL now no longer disables the $PREF{use_iframe_for_upload} feature; this was reported as an update in the previous version, but wasn't quite all there.
  • Bugfix: the $PREF{create_resized_copies_of_uploaded_images} feature failed to honor the $PREF{overwrite_existing_files} setting if it was enabled, so any resized image copies with the same name as existing images would always get an _01, _02, etc, added to their names.
  • Bugfix: the $PREF{enable_custom_sql_commands} feature did not work if $PREF{store_upload_info_in_database} was disabled.
  • Bugfix: added internal _qsready versions of a few key prefs ($PREF{here} in particular) to allow proper embedding within a page that already uses the query-string for navigation.  For example if your page is index.php?page=upload we would previously try to use index.php?page=upload?action=listfiles as the link to the downloads page, rather than index.php?page=upload&action=listfiles as we do now.

v4.59 (20100330):

  • Setting a $PREF{after_upload_redirect_to} URL now no longer disables the $PREF{use_iframe_for_upload} feature.
  • Bugfix: a previous update caused uploads to appear to get stuck at the "Upload Complete; processing..." screen, if both $PREF{enable_debug} and $PREF{use_iframe_for_upload} were enabled (and in certain other cases where the iframe is enabled and output occurs before the upload completes).
  • Bugfix: a previous update caused the "options" menu (for each file/folder on the downloads page) to display behind the file list in some browsers, making it effectively invisible and unclickable.

v4.58 (20091215):

  • New $PREF{admin_usernames_list} setting, for when you're integrating with a non-UserBase login system, and you want to specify which of your users are administrators.  This replaces the PHP_ENC_ISADMIN variable and the $PREF{admin_usernames_for_apache_auth} setting, and the two $PREF{member_username_cookie_name} & $PREF{admin_username_cookie_name} settings have been consolidated into a single $PREF{username_cookie_name} one. 
  • The $PREF{groups_allowed_to_list_files} setting has been renamed to $PREF{groups_allowed_to_view_download_page}, just to make its purpose more clear; similarly the _list_files_in_top_level permission is now instead called _view_top_level_of_download_page.
  • New "Show All Prefs" feature, available on the Administration page, shows the values of all your prefs.
  • Updated the blacklist/whitelist feature so that in addition to all-or-nothing whole-app blocking, you can specify that users matching the lists are automatically added to special encblacklisted/encwhitelisted groups, which you can use in any of the $PREF{groups_allowed_to_*} settings.
  • New $PREF{get_userdir_from_username} setting, to simplify the enabling of the userdir feature when integrated with a non-UserBase login system (we've always done this when integrated with UserBase).
  • Large overhaul of the email notification prefs to allow more than just 2 email templates (webmaster and user); you can now create separate templates for the various kinds of email notifications (user-entered email addresses, UserBase folder owner, logged-in user's email address, etc).
  • New $PREF{app_output_template} setting allows you to fully customize the overall structure of the markup we output.  This replaces some previous settings like $PREF{intro}, $PREF{outer_container} & $PREF{inner_container}, etc.
  • Updated the CSS for the drop-shadows in the shadowlight (default) and shadowdark styles; they no longer use fixed-width images, so the app's overall width can be set to any arbitrary value and the shadows will adjust to suit.
  • New $PREF{formfield_NN_only_for_these_groups} feature allows you to specify that a given field on the upload form should only be displayed if the user is a member of a certain group.
  • New $PREF{formfield_NN_dont_send_email} feature allows you to create a form field that collects email addresses but does not send notification emails to the entered addresses.
  • Renamed the "Options Menu" at the top of the downloads page to "View Menu" to disambiguate it from the "options" menu on each individual file/folder in the downloads list.
  • For prefs that default to filechucker@example.com, such as the sender address on notification emails, if you leave it set to the default we'll automatically change it to filechucker@<thisdomain.com> at runtime.
  • Changed some of the CSS to remove specified widths on inner parts of the pages, so that a single outer width value is all that's specified, which makes it easier to adjust that width.
  • If the server's version of the CGI module is ancient, we'll display an error saying so right in the footer of every page, since it's likely to prevent the app from working correctly.
  • The Check Image Modules feature in the Administration section now does a few checks for a "convert" command in some of the likely locations.
  • Automatically fix the DOCUMENT_ROOT on GoDaddy servers, which set it incorrectly for subdomains.
  • Bugfix: some notification emails displayed percent symbols between sections for no good reason.
  • Bugfix: specifying a form field to be both required and an email field could result in a confusing error message if the user left the field blank.
  • Bugfix: the 3 $PREF{show_link_to_uploads_for_strangers} (and _members and _admins) settings got broken in a previous update; they had no effect so you had to manually modify the template for the Upload Complete page to adjust that output.
  • Bugfix: a previous update caused us to fail to autodetect when HTTPS was in effect.

v4.57 (20091017):

  • New $PREF{enable_username_from_apache_auth} feature provides support for Apache's htpasswd-based user accounts, in case you don't want to use a proper login system like UserBase.
  • On the file list, if you check a single file's checkbox then use the Actions Menu to download it, we now pretend that you actually clicked on that single file itself, rather than going through the multi-file download process with only the single file (which worked fine, it was just overkill, since zipping a single file is kind of pointless).
  • Bugfix: a previous update caused the login link to always point to the full filechucker.cgi URL, even if you set $PREF{here} to something else.

v4.56 (20090928):

  • New $PREF{default_filelist_sort} setting in case you want the file list to be sorted by something other than filename by default.
  • New $PREF{filefield_template} setting in case you want to adjust the HTML for the file fields on the upload form.
  • Miscellaneous updates to the database viewer/editor behind features such as the upload log and download log.
  • Improved performance of the file list's pagination feature on servers with large numbers of files in a single directory (~1000 or more).
  • Bugfix: a recent update could cause a MySQL error on servers with older versions of MySQL, on pages that use the database viewer/editor.
  • Bugfix: in rare situations involving features which require the script changing into a different directory (such as the multi-file download feature), some errors that could occur would fail to be properly reported, and instead a more obscure and confusing error would result.
  • Bugfix: a previous update broke our ImageMagick detection (or rather how we handled the result of it) so we didn't use ImageMagick even if it was available on the server.
  • Bugfix: with userdirs enabled, a particular malformed query-string could allow a user to view the list of other userdir folders (but not access those folders) on the server.
  • Bugfix: in Opera, when the user chooses a file for upload and we automatically add another file field, the new field was pre-filled with the same file that was selected in the first file field.
  • Bugfix: if using both $PREF{show_upload_status_in_popup_window} and $PREF{default_page} = 'filelist', the progress bar didn't display.

v4.55 (20090811):

  • There is now an Administration page which contains links to a few new features (a help page, a configuration instructions page, a server variables page, and an image-module-testing page) as well as a few features that were previously linked directly from the footer (upload log and download log).
  • New image-module-testing page which shows whether your server supports the ImageMagick Perl module and the GD Perl module, and explains what it means and what to do if your server doesn't support them.
  • We now automatically internally disable the try_to_use_* prefs for ImageMagick and GD when both are unavailable on the server, rather than displaying an error telling the user to manually disable those.
  • The file-list page now supports pagination, for situations where you have lots of files at a single level rather than within multiple subfolders.
  • Bugfix: the %%ub_var_name%% variable didn't work in notification emails; it's now been replaced by %%ub_var_username%% and %%ub_var_realname%%.

v4.54 (20090727):

  • The administrator password hash is now null by default, and visiting the login page will prompt you to create a password.
  • On the upload form, we now use a better method for highlighting any unfilled required fields, the main benefit of which is that they regain their original styling correctly when un-highlighted.
  • On the upload form, any checkbox fields that you add now default to being recorded as "yes" or "no" rather than 1 or 0.  This is adjustable via a formfield_NN_binary pref if you prefer to have 1/0 instead.
  • Custom fields on the upload form now support formfield_NN_transform_foo prefs, where for any field, a value of "foo" will be transformed into whatever other value you specify.
  • Tweaked the layout of the upload form and the overall app styling, mainly to make the various items on the upload form (including any custom form fields) line up more nicely.  Also, most kinds of custom form fields are now template-based, and you can even specify a different template on a per-field basis.
  • Various small improvements to the database-viewer/editor function that's behind features like the uploadlog and downloadlog.
  • When the uploaded files folder doesn't exist, the error message that we display will now show the current DOCROOT value and whether that exists, to aid in troubleshooting.
  • Our debug-mode output is now more friendly, with any HTML converted so that it will show up properly, and can be viewed directly on the bottom of the page rather than having to view the page's source-code.
  • When embedded within another page and using username/userdir from a PHP session, we now ignore the username/dir if the PHP session is null.  This is sort of a bugfix depending on your perspective.
  • Bugfix: the $PREF{allow_userdir_on_url_insecurely} feature got broken in a prevous update.
  • Bugfix: on systems with inconsistent case-sensitivity rules (Windows), having SQL table/field names that aren't entirely lowercase can result in errors if you need to check for the existence of a table/field and auto-create it if DNE.  So we now convert them all to lowercase first.
  • Bugfix: with the new non-redirecting upload feature enabled, certain messages and errors would fail to be displayed.
  • Bugfix: more older versions of IE failed to show the Upload Complete message for the new non-redirecting upload feature.

v4.53 (20090629):

  • Bugfix: older versions of IE failed to show the Upload Complete message for the new non-redirecting upload feature.

v4.52 (20090627):

  • New $PREF{prevent_direct_cgi_access} option for users who want to embed FileChucker within an existing page and don't want it to be possible to visit the CGI script directly.
  • New experimental support for the netpbm image-processing library as a backend for our human test feature, for those rare servers lacking the GD Perl module and the ImageMagick Perl module and ImageMagick itself.
  • Specifying a custom icon for a specific file type on the file list page now causes the generic icon to be hidden, and now by default the custom icon has no border applied.
  • Bugfix: when embedding FileChucker into an existing page, and using static CSS and JS files from FileChucker in that page's header, and using the human test feature in the non-invisible mode, the human test image would fail to display.
  • Bugfix: on a small percentage of servers, the ImageMagick installation seems to require that you explicitly specify the font name when creating an image containing text, such as in our human test feature.  On those servers, failing to specify the font name results in an image being created successfully but lacking any text.  So we now specify a font name.

v4.51 (20090601):

  • New blacklist/whitelist feature to block users based on IP address or hostname.
  • Modified the upload process so it now occurs in-page in a more AJAX-y way: it now displays the "Upload Complete" message in the same page without reloading or redirecting the page.  In most cases this makes no difference, but it makes it easier to embed FileChucker into existing layouts/pages which are dynamically generated or otherwise complex.  As a nice side-effect, this also allows the progress bar to work in-page in Safari, no longer requiring a popup window.
  • Can now scan uploads for viruses and reject them if they're infected, assuming your server has a command-line virus scanner available.
  • Changed some widths from pixel values to percentages, in order to simplify the process of editing the CSS to make FileChucker narrower to fit within narrow existing layouts.
  • New $PREF{progressbar_update_delay} setting, for servers that are slow or overloaded, where making the progress bar updates occur less frequently may help to improve performance.
  • Bugfix: on servers with GD, without ImageMagick, and with the human test feature enabled, we would sometimes display an error saying that GD was not available, when it really was.
  • Bugfix: due to a change in a previous update, setting some options to null (including $PREF{title}) would make the upload progress bar fail to display.

v4.50 (20090523):

  • Simplified the installation process by including a new folder called "www.example.com" within the filechucker.zip file; this folder contains the full directory structure and all files necessary for FileChucker to work, so you don't need to manually create any files or folders -- just upload the contents of the folder to your server.  So although the installation process was pretty straightforward before, now it's basically just drag-and-drop.

v4.49 (20090514):

  • Moved icons and other app images into the /upload/fc_icons_etc/ folder, instead of having them directly in the /upload/ folder by default as before.

v4.48 (20090504):

  • We now attempt to detect whether we're being executed via command line, and print a useful error in that case, to prevent getting the FAQ about why it doesn't work from the command line (answer: because it's a web app).
  • When integrated with UserBase and using its subgroup-manager feature, FileChucker now automatically gives such managers access to the files & folders of the users that they "own".
  • When displaying thumbnails, if the server doesn't support our figuring out their dimensions, then we'll omit the width and height attributes altogether, rather than setting them to null, to work around an IE bug in which it treats null as meaning "1 pixel".  Ugh.
  • When a user does a multi-file download, we now check to make sure our zip file exists before attempting to send it for download, and if it doesn't exist, then we display a more useful error message indicating the likely cause (that there is no "zip" command on the server) with links to zip apps that could be installed on the server.
  • We now support shared prefs files, for specifying prefs a single time to be used in multiple apps, or in multiple copies of an app.
  • The pages which display database contents now handle reverse-sort differently: instead of reversing the order of whichever N items were displayed on the current page, we now reverse the whole dataset itself.  So the N items displayed on say page #3 of the data will not be the same N items displayed on page #3 in reverse-mode.
  • We now attempt to automatically correct Network Solutions' screwy configuration on servers that are afflicted by it.
  • Bugfix: in rare cases, an apparent bug somewhere in the Perl MySQL stack causes dropped connections, which are not reconnected even if that flag has been set for the connection.  So we now always do a check-and-reconnect before doing any database communication.
  • Bugfix: the allow_userdir_on_url_insecurely setting interferes with the serial_is_userdir setting, so ignore it if the user inadvertently enables both.
  • Bugfix: on Windows servers, in situations where we need to create new folders which include multiple levels, if the server is using drive-letter paths instead of UNC paths, then we failed to create the new folder.

v4.47 (20090409):

  • New multi-download feature allows users to select multiple files/folders on the downloads page and then select a "Download" option from the Actions Menu at the bottom; this will cause FileChucker to create a zip file of the selected items and then offer it to the user for download.
  • The download-landing-page feature now supports a countdown timer, which will hide the download link for a period of time; this is useful for situations where you want to display ads on the landing page.
  • We now use a timeout when creating thumbnail images, so that any image/video files which are corrupt or too big can be skipped, rather than causing the page to take minutes to load, or fail to load completely.
  • When deleting multiple files from the downloads page, we now keep a running log of any errors that occur and display them at the end, rather than stopping on error and not even attempting to delete the rest of the items that were selected.
  • For the automatic_new_subdir_name and reformat_filenames_for_all_uploads features, the format for inserting date variables has changed from simply %v to %DATE{%v}.  And this format is now part of the standard set of external variables that we support within all pref values.
  • Bugfix: the previous update introduced a bug which prevented form fields with the _save setting from correctly displaying the saved values; they were displayed as a "1" regardless of what the value really was.

v4.46 (20090325):

  • All prefs can now include variables from the URL, cookies, environment variables, other prefs, and from MySQL select queries.  See this FAQ item for details.  For example such variables can be used within a $PREF{formfield_NN_default} setting to set the default value of a form field from any of those data sources.
  • The file list on the "Download Files" page can now be set to hide file extensions. [$PREF{hide_file_extensions_in_filelist___from_first_dot}, $PREF{hide_file_extensions_in_filelist___from_last_dot}]
  • The upload serial number can now be cut down to a shorter length even after hashing, mainly for use with the $PREF{serial_is_userdir} feature for situations where a shorter URL is desired. [$PREF{cut_serial_to_this_length_even_after_hashing}]
  • Added note to prefs file about how to use an image as the submit button on the upload form.

v4.45 (20090308):

  • When a user tries to access a page that he doesn't have permission to access, instead of just printing the access-denied/login-required page, we'll use Javascript to automatically redirect there.
  • New $PREF{enable_perfile_passwords} setting to explicitly enable this feature, rather than implicitly enabling it based on the existence of a _password form field as before.
  • New $PREF{userdir_shared_secret} setting to allow the userdir to be passed on the URL in a secure way, for situations where you're integrating with an existing non-UserBase login system and the other methods (cookies, PHP env vars) are not available on your server or in your login system.
  • You can now set $PREF{title} and $PREF{intro} on a per-page basis (i.e. a different title for the upload form, the file list, etc).  Actually this has been possible for a while for $PREF{title}, but the per-page variations of the prefs are all explicitly enumerated in the prefs file now.
  • New $PREF{formfield_NN_displayname} option, to specify extra text with the form field's title on the upload form, that you don't want to be displayed elsewhere (in the notification emails for example).
  • Added a few more file types and strings to the default lists of disallowed and hidden types/filenames.
  • Renamed the $PREF{hide_topmost_level_in_breadcrumbs} setting to $PREF{hide_links_to_topmost_level_from_userdir_users} so its purpose and scope are more clear; also cleaned up the handling of leading/trailing slashes for the various permutations that affect the breadcrumbs display.
  • For the extra upload fields that are now automatically generated (by default at least) once the user selects the first file to upload, we now display the text "(optional; may be left blank)" so that the user doesn't think that he must upload multiple files.
  • You can now create multiple copies of the style preference ($PREF{css1}, $PREF{css2}, etc) and call them as ?css1, ?css2, etc, in case you want to embed FileChucker in multiple different pages with different styles.
  • Modified how our built-in password protection handles redirection: instead of having ?target=foo with individually-specified cases for where to redirect, we now just redirect to the referer, as UserBase does.
  • When displaying the error stating that our onload actions failed to run, and that you must remove any onload from your page's body tag, we now include a link to a page explaining how to use multiple onload events so you can preserve your existing one.
  • Bugfix: when processing download links internally (so we can check permissions for example), we presented the file for download even if the file no longer existed, or if it was empty -- the downloaded file would simply contain an error message.  We now check for empty/nonexistent files and display a sensible error message in the browser directly.
  • Bugfix: the upload-complete page now displays newlines as HTML newlines (instead of as spaces which is the default with HTML) for any form fields whose submitted values contain newlines.
  • Bugfix: on IIS servers where the docroot is a virtual UNC path, we now correctly auto-detect that, rather than requiring it to be specified manually.
  • Bugfix: the $PREF{try_to_use_identify_for_dimensions} setting didn't work because we weren't enabling $PREF{identify_available} with it (only affects those using the image features on servers without the ImageMagick and/or GD Perl modules).

v4.44 (20090202):

  • Bugfix: the previous update introduced a bug which caused FileChucker to fail to submit insertions/edits/deletions when editing the database tables for certain features (upload and download logs for example) when FileChucker was embedded within another page.

v4.43 (20090109):

  • Default data directory name changed from "fcdata" to "encdata"; also removed the dot from default image directory names ".fcht" and ".fcimages"; renamed our default make-new-directory query-string variable from "mkdir" to "makefolder" because some servers treat any mention of "mkdir" as a security threat.
  • In situations where we need to display some output but we're currently outside of any page we might be embedded in (which typically means when we're POSTed to), we now perform a redirect to ourselves within the embedded page before displaying the output.
  • For the various features that require the enabling of the $PREF{download_links_go_through_FileChucker} setting, we now enable it automatically when the feature in question is enabled.
  • New $PREF{add_new_file_upload_fields_automatically} setting automatically creates a second file upload field when the user selects a file in the first one.  This is as opposed to the previous behavior, where the user had to click an "Add another file?" link.
  • Renamed the $PREF{automatically_delete_old_files} setting to $PREF{automatically_delete_old_uploads} so its purpose is more clear, and to distinguish it from the $PREF{automatically_delete_old_logfiles} setting.
  • The upload log and the download log now support a vertical display mode, and now support the editing & deleting of records.
  • Clarified the error message displayed when the human test is enabled but the server doesn't support the necessary image processing features.
  • Made the client-side file extension filtering be case-insensitive.
  • Bugfix: users who recently updated from older versions and who also use UserBase would sometimes receive an error about a missing column during login; that's fixed now.
  • Bugfix: a small number of servers treat an "http" in the URL as an error (other than the one at the very beginning), so we now remove that in any situation where we're passing addresses on the end of the URL.

v4.42 (20081028):

  • For the serial_is_userdir feature, we now do a forced redirect to ourself passing the userdir on the URL, so that repeated visits to the script don't create lots of empty userdirs (since a new serial/userdir gets generated each time if it's not specified on the URL).
  • New $PREF{force_https} setting, which causes us to do a forced redirect to ourself using https:// if we were visited without it.
  • New hide_leading_slash_in_breadcrumbs (and _trailing_) settings, which affect the path displayed at the top of the "Download Files" page.  Also code refactoring so that if the features & text are all disabled within this top row of the file listing, then the row itself is not displayed.
  • Renamed some of the prefs used by the upload and download log pages, and changed the styling of those pages.
  • For extra form fields, you can now specify default values that include variables from the URL and PREF values (previously this was only possible for *hidden* extra form fields).
  • When loading pref values from UserBase's prefs file, we now include strings from the %TEXT hash.
  • Updates to shared code to support new UserBase features (logging of failed & successful logins, last-active-time logging, password expiration).

v4.41 (20081006):

  • Removed the $PREF{smtp_port} setting; this should be specified on the end of the $PREF{smtp_server} value, because some Perl installations don't honor the separate port spec.
  • Bugfix: don't require $PREF{store_upload_info_in_database} in order to use extra formfields, in case the user wants to simply email the values, or pass them on the URL to another page post-upload.

v4.40 (20080928):

  • Removed the $PREF{store_upload_info_in_files} feature, because virtually all servers have SQL available, so $PREF{store_upload_info_in_database} is a better option; and because removing this feature greatly simplifies some aspects of the code, and significantly reduces the size of the application.
  • Bugfix: when deleting a file with the store_upload_info_in_database feature enabled, if the file was not in a subfolder, then the file's upload info would fail to be deleted from the database.

v4.39 (20080927):

  • Bugfix: the show-all-permissions page was failing to display due to a change in the name of the permissions table preference.

v4.38 (20080925):

  • New $PREF{populate_each_new_userdir_from_this_folder} feature for situations where new userdirs need to be pre-filled with files/folders from a default set.
  • New $PREF{add_www_to_hostname} and $PREF{remove_www_from_hostname} settings, for situations where that can't be done at the server level.
  • Any custom fields defined in UserBase can now be used in various FileChucker settings using the %PREF{ub_var_foo} syntax.  For example a UserBase custom field named "city" would be %PREF{ub_var_city}.
  • On the Download Files page, for files that are displayed as thumbnails (images, videos), we now check the timestamp on the thumbnail and the original file to determine if we need to recreate the thumbnail, in case the original file has changed.
  • For the $PREF{resize_uploaded_images} feature, we now only resize images that are larger than your specified dimensions; we no longer upscale smaller images.
  • Added new method of calling UserBase, for servers without PHP and which don't allow executing external commands (mainly particular IIS versions).
  • Consolidated our writable_dir_perms* and writable_file_perms* settings.
  • Bugfix: the "round" style had an issue where the header on it file-list page was getting squished.
  • Bugfix: we now do multiple iterations of %PREF{foo} interpolations for the preferences, so that in situations where nested interpolations exist, we can resolve them correctly.

v4.37 (20080912):

  • Changed the default value of the $PREF{userdir_folder_name} setting from "home" to "users" to make its purpose more clear.
  • Added new $PREF{custom_form_fields_namelist} setting, so that when using custom HTML code for the upload form, you can more easily specify the names of your form fields.  The previous method (still supported because it allows more flexibility) is to create a set of $PREF{formfield_NN} settings for each custom form field.

v4.36 (20080908):

  • The "Upload Complete" page is now template-based and thus fully customizable.  It also now automatically displays the data for any extra formfields that you've defined.
  • On the file info page and in the notification emails, we now hide the "Form fields:" section altogether if you haven't defined any extra form fields, rather than displaying the section but leaving it empty.
  • We now delete thumbnails when their corresponding image/video files are deleted.
  • When creating our human-test images, we now check that the output image exists and has a nonzero file size before attempting to use it, because of strange issues on some servers where ImageMagick/GD are installed but not functioning properly.
  • New ?output=firsthalf and ?output=secondhalf modes to make it possible to embed FileChucker into an existing page containing an existing form and have FileChucker process that form.  This is useful for existing forms that are large or complex; otherwise, our already-existing methods of specifying extra form fields or custom HTML for a smaller number of form fields usually suffice.
  • Bugfix: when displaying directory lists (in the dropdown menu on the upload form for example) we were using a depth-based sort, but that produced a strange sort order in many cases where there are multiple nested directories with foldernames of varying lengths.  This is now a straight alphabetical sort.
  • Bugfix: when deleting a file, we attempted to delete its corresponding database entry without checking whether the entry existed, resulting in an error if you've got files in FileChucker's uploads folder that you put there via some other method.  We now check to make sure the upload record for the file exists before trying to delete it.
  • Bugfix: on the file list, disabling folder thumbnails now applies to both kinds of thumbnails -- video and image -- not just image.

v4.35 (20080902):

  • Bugfix: if you didn't read the instructions with the new $PREF{log_all_downloads} feature which state that you have to set the database settings in PREFs Section 12, and you left those settings null, we'd display an obscure error.  We now check for the db settings when $PREF{log_all_downloads} is enabled, and if they're missing we explicitly state that.

v4.34 (20080828):

  • New setting to ignore any errors that may occur while creating thumbnails for video files ($PREF{ignore_video_thumbnailing_errors}), rather than breaking the page and halting the output on that file, since corrupted video files are fairly common.
  • We can now display video thumbnails as folder thumbnails when a folder contains a video, as we do for image thumbs.

v4.33 (20080826):

  • Bugfix: some of our background images weren't being displayed because of a bug in the CSS in the prefs file.

v4.32 (20080820):

  • We can now log download information to a database ($PREF{log_all_downloads}), in addition to upload information as before.
  • We can now send notification emails on downloads, too ($PREF{send_download_notification_emails}).
  • We now have built-in pages to view the upload info database and the download info database.
  • Storing upload information into a database is now much simpler to set up.  (See $PREF{store_upload_info_in_database}.)  We now create the database table automatically, store a set of default fields automatically, and we automatically store the values of any formfields that you define.  We didn't do this stuff automatically before because of the fact that users might want to create column types specific to the data they're requesting; but in most cases it does make sense to simply default all columns to TEXT, and advanced users can simply modify their column types if they want to.
  • Our database date field is now formatted as YYYYMMDD-HHMM instead of the previous format which was longer, less standard, and included the day of week, etc.

v4.31 (20080819):

  • Hidden form fields can now be set to totally custom values including variables from the URL and from cookies.
  • If you're storing upload info in a database, but some of your column names don't match our internal names (for things like filename, path, etc), you can use the new $PREF{db_column_name_conversions} setting to avoid having to modify your database table or manually modify the filechucker.cgi code.
  • New $PREF{enable_custom_sql_commands} setting allows you to specify totally custom SQL statements to be executed upon upload.
  • Added some CSS so that the filelist page does a better job of retaining its built-in styling when embedded into a page with additional styling.
  • The custom_form_fields feature now supports URL and cookie variables, as well as populating dropdown fields using SQL queries.
  • The fileinfo page (displayed when you click the options menu on a file and then choose info) can now be generated by a custom query using the new $PREF{fileinfo_query} setting.  This is probably not necessary for most uses though.
  • Removed a bunch of settings from the prefs file that were required when integrating with UserBase; we now read the UserBase prefs file directly to get these settings.
  • Simplified the database settings: you no longer need to use separate files to specify your SQL information.
  • The "upload complete" page can now optionally display the code for an [IMG] tag to be copied & pasted.
  • On certain error conditions, we now include the original query-string that we received, to help maintain the state of any page we might be embedded in.
  • Refactored some of the code for AJAX-based functions to make it more straightforward and easier to replicate when adding additional AJAX-based functionality.
  • Added support for negative permissions: in addition to the standard groups_allowed_to_* settings, you can also create groups_not_allowed_to_* settings, for more fine-grained control over permissions.
  • Values from checkbox formfields are now automatically converted to a one or a zero by default.  This could be considered a bugfix if you were previously using FileChucker to store checkbox values into an SQL column of type BOOL or TINYINT.
  • Bugfix: when using the custom_form_fields feature, depending on how you set your formfield prefs, the labels on the fileinfo page might have been missing.
  • Bugfix: in some cases depending on server & browser caches as well as your particular FileChucker configuration, using your "Back" button to return to the upload form after completing an upload could result in the "Begin Upload" button being disabled.  We now automatically enable this button when the form loads in case it was disabled before.

Older Changelog Items

Client Quotes

I've been using Filechucker for almost two years, and I'm very happy with it.  It's been used to send many gigabytes of sensitive legal files, and it's worked like a charm... Love your script.
– Andrew G.
Your FileChucker script has been a lifesaver for my recording studio - it's become the backbone of our entire website!  Thanks again.
– Jason M.
FileChucker is the end of years of search for a full featured uploader ... I've purchased 5 or 6 before.  Few worked at all, and none had the feature set or the support that I've enjoyed with your product.  Thanks so much!
– Larry W.
Powerful script, powerful support.  Quit shopping and buy it.
– T. Ferris
Filechucker has been a boon for us.  I look forward to purchasing again.
– Neil G.
I would like to say that I am in love with your product FileChucker, it is the best app that I have ever bought online!  It does everything... WOW!
– Mark M.
FileChucker has been one of the best web apps we have used!  You wouldn't believe all the compliments we get on the uploader!  It's a great product and is very well programmed!  It's great to be working with you!
– Michael N.
Thanks much!  I love this script!  It works great for so many of my customers to send us files without having to be computer literate enough to use an FTP.  Thank you again for sharing and maintaining such a great script!
– Tashina M.
FileChucker is one heck of a useful and well documented product.  It makes me want to take courses in CGI and PERL.  I will gladly keep recommending it to friends, collegues and clients.
– Rob M.
FileChucker has worked perfectly for us since installation, and our users have fallen in love with the ease of use for sending us files.
– Chris K.
I just want to give a rave review of your FileChucker program.  It is designed very well and easy enough to implement.  I've never worked with Perl and I was able to follow your directions and adjust the code to fit my needs.  Your program just cured a headache I've had for the last 2 years.  Thanks!
– Cole L.