Index: db_event_handler.php
===================================================================
--- db_event_handler.php	(revision 13862)
+++ db_event_handler.php	(working copy)
@@ -2644,14 +2644,11 @@
 
 			$field_name = $this->Application->GetVar('field');
 			$fields = $this->Application->getUnitOption($event->Prefix, 'Fields');
+			$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
+			$field_options = array_key_exists($field_name, $fields) ? $fields[$field_name] : $virtual_fields[$field_name];
 
-			if (array_key_exists($field_name, $fields)) {
-				$upload_dir = $fields[$field_name]['upload_dir'];
-			}
-			else {
-				$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
-				$upload_dir = $virtual_fields[$field_name]['upload_dir'];
-			}
+			$upload_dir = $field_options['upload_dir'];
+			$storage_format = array_key_exists('storage_format', $field_options) ? $field_options['storage_format'] : false;
 
 			if (!is_writable($tmp_path)) {
 				// 500 Internal Server Error
@@ -2666,7 +2663,19 @@
 
 			$fname = $upload_formatter->_ensureUniqueFilename($tmp_path, $fname);
 
-			move_uploaded_file($value['tmp_name'], $tmp_path.$fname);
+			if ($storage_format) {
+				$image_helper =& $this->Application->recallObject('ImageHelper');
+				/* @var $image_helper ImageHelper */
+
+				move_uploaded_file($value['tmp_name'], $value['tmp_name'] . '.jpg'); // add extension, so ResizeImage can work
+				$url = $image_helper->ResizeImage($value['tmp_name'] . '.jpg', $storage_format);
+				$tmp_name = preg_replace('/^' . preg_quote($this->Application->BaseURL(), '/') . '/', '/', $url);
+				rename($tmp_name, $tmp_path.$fname);
+			}
+			else {
+				move_uploaded_file($value['tmp_name'], $tmp_path.$fname);
+			}
+
 			echo preg_replace('/^' . preg_quote($id, '/') . '_/', '', $fname);
 
 			$this->deleteTempFiles($tmp_path);
