- Parameters for HTTP upload -

Here is the list and the meaning of all JFileUpload parameters for HTTP upload. You will also find HTML/JavaScript sample for Applet definition. Notice that there are two types of parameter: regular and extra. "dummy=test" regular parameter is setup through <PARAM NAME="dummy" VALUE="test">. dummy=test extra parameter number five is setup through <PARAM NAME"param5" VALUE="dummy"> and <PARAM NAME"value5" VALUE="test">.

JFileUpload regular parameters
Parameters Description and sample Mandatory
url Web server URL that will process the upload. It could be the URL of JSP, PHP, CGI, CFM, ASP, ASP.NET... server-side script. For instance, http://www.mycompany.com/upload.jsp yes
mode This parameter allows to select transport protocol. For HTTP upload it must be "http". yes
paramfile This parameter matches to input file HTML form field needed for upload. Default is "uploadfile". Check out server-side script to know if you need to modify this parameter. yes
maxsize This parameter allows to limit upload size (in bytes). For instance, to avoid end-user to send more than 1MB file, use maxsize=1048576. Default maxsize is -1. It means unlimited upload size. Note that 1MB=1024*1024=1048576 bytes. no
maxfiles This parameter allows to limit number of files to upload. Default maxfiles is -1. It means unlimited files.
whitelist This parameter allows to filter filenames to upload (*.doc, *.exe, *.gif, *.pdf ...). For instance, to allow end-user to upload microsoft excel files only, use whitelist="*.xls". For both gif and jpeg use whitelist="*.gif,*.jpg,*.jpeg".
blacklist This parameter allows to forbid filenames to upload (*.exe, *.zip,*.mp3 ...). For instance, to disallow end-user to upload microsoft executable files, use blacklist="*.exe". Note that if you use blacklist then you cannot use whitelist parameter.
policy This parameter allows to modify jfileupload behavior when a file to upload does not match to whitelist or maxsize. Default value is "abort", it means that upload won't proceed. "ignore" value means upload will proceed and unmatching files will be ignored.
folderdepth This parameter allows to set a max depth for directories and subdirectories uploads. Default is 0, it means to not recurse subdirectories, -1 means unlimited.
resume This parameter allows to resume broken uploads. Values could be "false", "true", "crc", "md5". Default is false. An upload is considered broken if remote file already exists and remote file size < local file size. Additional control could be added :
"crc" : Check if remote file CRC checksum equals local file CRC.
"md5" : Check if remote file MD5 hash equals local file MD5.
See FAQ to learn how it works.
overwrite This parameter allows to define overwrite policy for duplicate file on remote server. Values could be :
"true": Allow overwrite.
"false": Return an error message for duplicate uploads.
"indexrename": Rename duplicate upload such as file_1.zip.
"timerename": Rename duplicate upload such as file_mstime.zip
Default value is true. See FAQ to learn how it works.
hiddenfile This parameter allows to "accept" or "deny" hidden files for upload. Default value is "accept".
template This parameter allows to rename files to upload with a given template. Value could be any combination of :
  ":filename:" => Selected filename.
  ":name:" => Selected name.
  ":shortname:" => Selected short name.
  ":extension:" => Selected extension.
  ":timestamp:" => Unix-like (epoch) timestamp.
  ":identifier:" => Auto increment integer starting at zero
  or value defined by identifierinit parameter.
  For instance, 
Value could be a regular expression followed by a string that will replace characters matching to the regular expression:
  For instance, if you want to replace all non ASCII characters   and punctuation by "_" then value of template will be:
If you need to apply template to folders in addition to files then add templatescope="path" parameter.
filechooserpattern This parameter adds a regular expression filter for file chooser. For instance, to filter filenames with ASCII characters only: filechooserpattern="regex=[^a-zA-Z0-9_\\-\\.]" no
overwritewarn This parameters allows displaying a pop-up that warns end-user about overwrite and allows overwrite/skip/cancel current transfer. It compares remote and local file based on filename, filesize and optional checksum. Values could be:
"true" => Filename + filesize comparison.
"md5" => Additional MD5 hash.
"crc" => Additional CRC32.
Notice that overwrite=true must be set.
ziponfly This parameter allows to zip file on-fly before uploading. It reduces bandwidth usage but it could affect client performance because of compression process.
Values could be :
"true" or "zip" => ZIP compression
"gzip" => GZIP compression.
".zip" or ".gz" extension will be appended to uploaded filename. Default value is "false". Learn more in FAQ.
For overall (one ZIP archive) compression, see tutorial.
zipignorelist When ziponfly is enabled, this parameter allows to setup filenames to not zip. For instance, zipgnorelist="*.zip,*gif". no
zipmaxsize This parameter allows to limit upload size (in bytes) of compressed file. For instance, to avoid end-user to send more than 1MB file, use zipmaxsize=1048576. Default zipmaxsize is -1. It means unlimited. no
startdir This parameter allows to setup a local directory, instead of user's home, when using file browser (e.g. startdir="c:/tmp")
authentication When authentication="auto", end-user will be prompted for credentials if needed. Default value is "disabled".
username This parameter allows to pass www-authenticate username.
password This parameter allows to pass www-authenticate password. no
chunksize This parameter allows to split file in chunks before uploading. It is required for more than 2GB uploads. Default is -1, it means to not split file to upload. Server-side script that processes upload need to recompose file from chunks. We recommend JSPUpload with process.jsp script that provides this feature.
chunkmode This parameter works with "chunksize" parameter above. If chunksize="onfly" then temporary chunks are not created on disk but in memory before uploading. chunkmode="onfly" isn't allowed when resume support is enabled. To support resume use chunkmode="onflyrange" (each chunk will be sent with Content-Range header).
encoding This parameter allows to modify request encoding. Default is ISO-8859-1. no
forward This parameter allows to redirect to another URL once upload is completed. You could select the target frame through forwardtarget parameter (see below).
For instance, forward="http://yourserver.com/redirect.php"
forwardtarget When forward parameter is enabled, this parameter allows to redirect URL to a given browser frame. Use _blank for new window.
forwardparameters When this parameter is set to true, jfileupload appends uploaded filenames to redirect URL. For instance, "?filename1=foo1.txt&filename2=foo2.zip ..."
post This parameter allows to send HTTP POST request once upload is completed. See FAQ to learn how it works.
For instance, post="http://yourserver.com/process.php"
postparameters This parameter allows to pass filenames uploaded in POST request above.
"true" means "filename1=foo1.txt&filename2=foo2.zip..."
"long" means "filename1=/home/usr1/foo1.txt&filename2=..."
"extra" is same as long with filesize, last modified timestamp and extra parameters. See tutorial to learn more.
checksum This parameter allows to compute a file checksum before uploading and send it into an HTTP "checksum" header.
Values could be:
"md5" => MD5 hash computation.
"crc" => CRC32 computation.
retry This parameter allows to retry current upload when underlying socket fails (bad networks, connection timeout). For instance, to enable 3 retry attempts => retry="3" no
retrydelay This parameter allows to setup delay in seconds between each retry attempts. Default is 2 seconds. no
preferences Use preferences="true" to enable persistent preferences such as last directory opened. no
timeout This advanced parameter allows to modify underlying socket timeout in milliseconds. no
socksproxyhost This advanced parameter allows to setup SOCKS proxy host.
socksproxyport This advanced parameter allows to setup SOCKS proxy port. no
resources This advanced parameter allows to select a custom properties file including all resources (messages, errors, menu, items, colors) to be displayed. See internationalization section in FAQ to learn more. no
localeresources This advanced parameter allows to load resources based end-user locale/country code. Default is true. no
verbosemode This advanced parameter allows enabling applet traces for debugging purposes:
"debug" => Debug traces are displayed in Java console.

JFileUpload extra parameters
Description and sample Mandatory
paramX and valueX pair While uploading, up to 16 additional HTTP parameters could be passed to server-side through paramX, valueX (with X in [1,16]). For instance if you want to pass username=johndoe parameter with on each HTTP upload then you have to setup param1=username and value1=johndoe.
Note that extra parameters below are reserved.
relativefilename When this parameter is set to true, JFileUpload sends relative pathname of file to upload. For instance, when you upload all files and subfolders from c:\tmp\ then the file foo.txt under c:\tmp\sub1\sub2\foo.txt will be uploaded with and additional relativefilename HTTP parameter whose value is sub1\sub2. This parameter is useful to allow server-side script to create folders and subfolders structure when uploading directories and subdirectories. Default value is "false". Learn more in FAQ. no
filetimestamp When this parameter is set to true, JFileUpload sends file last modified timestamp since epoch (January 1st, 1970). no
cookiename This parameter allows to pass a cookie to server-side. For instance paramX="cookiename" and valueX="JSESSIONID". no
cookievalue This parameter allows to pass a cookie to server-side. For instance paramY="cookievalue" valueY="21554AED616984". no
cookiepath This advanced parameter allows to pass a cookie to server-side. Default cookiepath is "/". Do not modify it if you don't know what is a path for a cookie. no
cookiesource This parameter allows to share all cookies loaded in browser with applet. Use paramX="cookiesource" valueX="jse" to enable it. It is recommended to not use cookiename/cookievalue above with this parameter. no
resumeheader This advanced parameters allows to override the default HTTP header (i.e. "size") used for resume support. For instance, paramX="resumeheader" and valueX="Content-Length".  
mimetypes This advanced parameter allows to add/overwrite content-types. For instance : paramX="mimetypes" and valueX= "application/msword:.doc;application/vnd.ms-excel:.xls" no
errorheader This parameter allows to pass custom error message from upload script to applet frond-end. See FAQ to learn more.
httpmethod This parameter enables HTTP PUT instead of HTTP POST multipart request through paramX="httpmethod" and valueX="put". Note that a "filename" HTTP header is included. If you plan to use "chunksize" parameter for HTTP PUT then you should use "chunkmode=onflyrange" too.
httpproxyhost This parameter allows to setup HTTP proxy host.
httpproxyport This parameter allows to setup HTTP proxy port. no
httpproxyusername This parameter allows to setup HTTP proxy username.
httpproxypassword This parameter allows to setup HTTP proxy password. no
httpproxyntlmdomain This parameter allows to setup windows domain name for NTLM proxy authentication.
httpntlmdomain This parameter allows to setup windows domain name for NTLM server authentication.

JFileUpload HTML and JavaScript declaration sample
Below the code you need to copy/paste in your HTML source to use jfileupload applet:
<!-- jfileupload Applet: Begin copy/paste -->
<script src="applet_http.js"></script>
<!-- jfileupload Applet : End copy/paste -->

Copy applet_http.js javascript file in the same folder as your HTML file. Setup parameters (according to table above) in blue. Notice that all parameters need to be setup twice (it allows cross-browsers support).
var _info = navigator.userAgent;
var _ns = false;
var _ns6 = false;
var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0 && _info.indexOf("Windows 3.1") < 0);
if (_info.indexOf("Opera") > 0) _ie = false;
var _ns = (navigator.appName.indexOf("Netscape") >= 0 && ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0) || (_info.indexOf("Sun") > 0) || (_info.indexOf("Linux") > 0) || (_info.indexOf("AIX") > 0) || (_info.indexOf("OS/2") > 0) || (_info.indexOf("IRIX") > 0)));
var _ns6 = ((_ns == true) && (_info.indexOf("Mozilla/5") >= 0));
if (_ie == true) {
document.writeln('<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH="250" HEIGHT="250" NAME="fileupload" codebase="http://java.sun.com/update/1.6.0/jinstall-6u34-windows-i586.cab#Version=6,0,0,4">');
else if (_ns == true && _ns6 == false) {
// BEGIN: Update parameters below for NETSCAPE 3.x and 4.x support.
document.write('<EMBED ');
document.write('type="application/x-java-applet;version=1.6" ');
document.write('CODE="jfileupload.upload.client.MApplet.class" ');
document.write('JAVA_CODEBASE="./" ');
document.write('ARCHIVE="lib/jfileupload.jar,lib/httpimpl.jar,lib/chttpclient.jar,lib/clogging.jar" ');
document.write('NAME="fileupload" ');
document.write('WIDTH="250" ');
document.write('HEIGHT="250" ');
document.write('url="http://localhost:8080/upload/process.jsp" ');
document.write('paramfile="uploadfile" ');
document.write('param1="todo" ');
document.write('value1="upload" ');
document.write('mode="http" ');
document.write('scriptable=true ');
// END
else {
document.writeln('<APPLET CODE="jfileupload.upload.client.MApplet.class" JAVA_CODEBASE="./" ARCHIVE="lib/jfileupload.jar,lib/httpimpl.jar,lib/chttpclient.jar,lib/clogging.jar" WIDTH="250" HEIGHT="250" NAME="fileupload">');
// BEGIN: Update parameters below for INTERNET EXPLORER, FIREFOX, SAFARI, OPERA, MOZILLA, NETSCAPE 6+ support.
document.writeln('<PARAM NAME=CODE VALUE="jfileupload.upload.client.MApplet.class">');
document.writeln('<PARAM NAME=CODEBASE VALUE="./">');
document.writeln('<PARAM NAME=ARCHIVE VALUE="lib/jfileupload.jar,lib/httpimpl.jar,lib/chttpclient.jar,lib/clogging.jar">');
document.writeln('<PARAM NAME=NAME VALUE="fileupload">');
document.writeln('<PARAM NAME="type" VALUE="application/x-java-applet;version=1.6">');
document.writeln('<PARAM NAME="scriptable" VALUE="true">');
document.writeln('<PARAM NAME="url" VALUE="http://localhost:8080/upload/process.jsp">');
document.writeln('<PARAM NAME="paramfile" VALUE="uploadfile">');
document.writeln('<PARAM NAME="param1" VALUE="todo">');
document.writeln('<PARAM NAME="value1" VALUE="upload">');
document.writeln('<PARAM NAME="mode" VALUE="http">');
// END
if (_ie == true) {
else if (_ns == true && _ns6 == false) {
else {

Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
All other company and/or product names are the property of their respective owners.