diff --git a/components/file.inc b/components/file.inc
index 47cf46fc..998267e2 100644
--- a/components/file.inc
+++ b/components/file.inc
@@ -28,6 +28,7 @@ function _webform_defaults_file() {
       ),
       'rename' => '',
       'scheme' => $scheme,
+      'temporary_scheme' => FALSE,
       'directory' => '',
       'progress_indicator' => 'throbber',
       'title_display' => 0,
@@ -352,6 +353,11 @@ function _webform_render_file($component, $value = NULL, $filter = TRUE, $submis
     $max_filesize = parse_size($set_filesize);
   }
 
+  // Save the file to the temporary file system.
+  if (isset($component['extra']['  temporary_scheme']) && $component['extra']['temporary_scheme']) {
+    $component['extra']['scheme'] = 'temporary';
+  }
+
   $element = array(
     '#type' => 'managed_file',
     '#theme' => 'webform_managed_file',
@@ -665,11 +671,20 @@ function webform_file_process_rename($node, $submission, $component, $fid) {
     $extension = $info['extension'];
 
     // Prepare new file name without extension.
-    $new_file_name = webform_replace_tokens($component['extra']['rename'], $node, $submission, NULL, TRUE);
-    $new_file_name = trim($new_file_name);
-    $new_file_name = _webform_transliterate($new_file_name);
-    $new_file_name = str_replace('/', '_', $new_file_name);
-    $new_file_name = preg_replace('/[^a-zA-Z0-9_\- ]/', '', $new_file_name);
+    if ($component['extra']['rename']) {
+      $new_file_name = webform_replace_tokens($component['extra']['rename'], $node, $submission, NULL, TRUE);
+      $new_file_name = trim($new_file_name);
+      $new_file_name = _webform_transliterate($new_file_name);
+      $new_file_name = str_replace('/', '_', $new_file_name);
+      $new_file_name = preg_replace('/[^a-zA-Z0-9_\- ]/', '', $new_file_name);
+    }
+
+    // If file was stored in the temporary file system, move it to it's intended
+    // destination directory and filename.
+    elseif (isset($component['extra']['temporary_scheme']) && $component['extra']['temporary_scheme']) {
+      $new_file_name = substr($file->filename, 0, -(strlen($extension) + 1));
+    }
+
     if (strlen($new_file_name)) {
       // Prepare the new uri with new filename.
       $destination = "$destination_dir/$new_file_name.$extension";
diff --git a/webform.module b/webform.module
index bb33f855..0797fb62 100644
--- a/webform.module
+++ b/webform.module
@@ -1324,6 +1324,9 @@ function webform_webform_submission_presave($node, &$submission) {
           if (strlen($component['extra']['rename'])) {
             $renameable[$cid][] = $value;
           }
+          elseif (isset($component['extra']['temporary_scheme']) && $component['extra']['temporary_scheme']) {
+            $renameable[$cid][] = $value;
+          }
         }
         $new_fids = array_merge($new_fids, $submission->data[$cid]);
       }
