Subdir Upload



3rd Party (Commercial)

EE Version Support

  • ExpressionEngine 1.x
  • ExpressionEngine 2


If an item is crossed out, it might be untested, not applicable or incompatible. Contact the developer to be sure.

  • Updater
  • Multi Site Manager
  • Stand Alone Entry Form
  • Low Variables
  • Content Elements
  • Better Workflow
  • Matrix
  • Grid
  • Webservice
  • Publisher


  • jQuery for the Control Panel

Add-On Type(s)



Allows to upload files to server directories and subdirectories from Control Panel's publish/edit form and from SAEF (EE1) and Safecraker (EE2); FieldFrame Matrix supported.

Installation for ExpressionEngine v. 2.0+

1) upload the add-on files into /system/expressionengine/third_party directory and theme files into /themes/third_party directory.

2) go CP Home > Add-ons > Fieldtypes and enable “Subdir Upload” fieldtype.

3) go CP Home > Add-ons > Fieldtypes > Subdir Upload and set options for each weblog.

Notice. If you plan to use Subdir Upload inside Matrix field, install Matrix version 2.2.2 or higher.

Installation for ExpressionEngine v. 1.x

1) To use Subdir Upload fieldtype you will need the latest FieldFrame build available at

2) upload the folder “subdir_upload” into /system/extensions/fieldtypes folder on server.

3) upload the file lang.subdir_upload.php into /system/language/english folder on server.

4) go CP Home >  Admin >  Utilities >  Extensions Manager > FieldFrame and enable “Subdir Upload” fieldtype.

5) go CP Home >  Admin >  Utilities >  Extensions Manager > FieldFrame > Subdir Upload and set options for each weblog.


For each weblog you can set following options:

1) Main upload directory - choose upload directory from those defined at CP Home >  Admin >  Weblog Administration >  File Upload Preferences. The files will be uploaded into this directory or/and its subdirectories.

2) Upload to subdirectories only - yes/no. This will permit the files to be uploaded only into subdirectories, not into parent directory.

3) Allow to select already uploaded files - yes/no. You can allow to select files which are already uploaded and stored on server.

4) Store deleted files in separate directory - yes/no. Deleted files can be stored inside “deleted” directory.

5) Creating thumbnails - yes/no. Not creating thumbnails can save some server resources.

6) Hide directories list - yes/no. If you plan to upload files into single directory, you can hide hide directories list. Files will be uploaded into directory selected by default. In case you set “yes”, you MUST define Directory selected by default.

7) Directory selected by default - Server path of the directory which should be selected by default. Leave blank if you don’t need such directory.

8) Width of the thumbnails - width in pixels of the thumbnails. Default value is 50px.

9) Height of the thumbnails - height in pixels of the thumbnails. Default value is 50px.

10) Pipe delimited list of file extensions - you can allow to upload only files having certain extensions or leave the field blank to allow any file type.

Template tags

To output the value of Subdir Upload field use field’s name (e.g “my_picture”) as template tag. It can be used in following ways:

1) without parameters


It will output file’s URI, such as /images/uploads/dir1/MyCat_1.gif

2) having parameter file_name_only=“yes”

{my_picture file_name_only="yes"}

It will output file’s name, such as MyCat_1.gif

3) having parameter thumb_name_only=“yes”

{my_picture thumb_name_only="yes"}

It will output thumbnail’s name, such as MyCat_thumb _1.gif

4) having parameter thumb_uri=“yes”

{my_picture thumb_uri="yes"}

It will output thumbnail’s URI, such as /images/uploads/dir1/thumbnails/MyCat_thumb_1.gif

Template tags inside Matrix tag

Say, you defined Matrix field named “my_images” having inside Subdir Upload field named “image_uri”. To output the value of Subdir Upload field you will use the code similar to this:


image_uri: {image_uri}
image_uri file_name: {image_uri file_name_only="yes"}
image_uri thumb_name: {image_uri thumb_name_only="yes"}
image_uri thumb_uri: {image_uri thumb_uri="yes"}


Usage inside SAEF

To include Subdir Upload field into SAEF use the code similar to this:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">


<script type="text/javascript" src=""></script>

body { 
    margin: 0; 
    padding: 0; 
    font-family: Arial, Lucida Grande, Verdana, Geneva, Sans-serif; 
    font-size: 12px; 
    color: #333; 
    background-color: #fff; 
        margin-left: 2em;
        margin-top: 2em;
h1 { 
    font-size: 14px; 
    font-weight: bold; 
    color: #424354; 
    background: transparent; 
    margin: 0 0 5px 0; 
    padding: 0; 
p, strong { 
    font-size: 11px; 
    color: #333; 
    background: transparent; 
    margin: 4px 0 4px 0; 
form { 
    margin: 0; 
    padding: 0; 
    border: 0; 
.hidden { 
    margin: 0; 
    padding: 0; 
    border: 0; 




{exp:weblog:entry_form weblog="technical" return="technical/test3"} 

<p>Title<br />
<input type="text" name="title" id="title" value="{title}" size="50" maxlength="100" onkeyup="liveUrlTitle();" /></p>

<p>URL Title<br />
<input type="text" name="url_title" id='url_title' value="{url_title}" maxlength="75" size="50" /></p>

<p>Categories<br />
<select name="category[]" size="4" multiple="multiple">


<p>More Pictures</p>

<p><input type="submit" name="submit" value="Submit" />
<input type="submit" name="preview" value="Preview" /></p>




Hooks Used

If the add-on is an extension, and ties into ExpressionEngine's core files, it will use ExpressionEngine hooks. We are listing any hooks the add-on uses for developers to have an easier time locating other add-ons that they can reference for their own work.

  1. show_full_control_panel_end
  2. weblog_standalone_form_end
  3. weblog_standalone_form_start

This entry was created March 17, 2011, 1:49 pm.
This entry was last updated March 20, 2014, 11:03 am.

Disclaimer: Information about ExpressionEngine add-ons is provided as a service to you, the user, and every member of the ExpressionEngine community. devot:ee is not responsible if you hose, mangle, wreck, or otherwise destroy your EE website by installing an add-on that you found out about at this site, regardless of its rating, Favorites status, commercial or free status, or general popularity. Caveat EEmptor!

Returns: devot:ee has a 30-day return policy on all commercial add-ons sold through If you need to return an add-on, do not go to the developer or the developer's site, but rather visit our returns page at to initiate your return. If you have questions, email

1 Review:

jtrascap 07.02.14

Rating - {addon_rating_average}

A valuable plug in, but increasingly frustrated by it breaking on every EE update (some core changes since EE2.5 still not fixed) and by a developer who doesn’t answer support questions.
Seems like a good guy but not reliable in a business sense.