diff --git a/includes/media.fields.inc b/includes/media.fields.inc
index 1f7f7cf..e93fdcc 100644
--- a/includes/media.fields.inc
+++ b/includes/media.fields.inc
@@ -250,6 +250,8 @@ function media_field_widget_form(&$form, &$form_state, $field, $instance, $langc
     '#media_options' => array(
       'global' => array(
         'types' => array_filter($instance['widget']['settings']['allowed_types']),
+        // field instance settings (extension, min/max size, ...)
+        'instance_settings' => $instance['settings'],
         // @todo: Not implemented
         'schemes' => $instance['widget']['settings']['allowed_schemes'],
       ),
diff --git a/includes/media.pages.inc b/includes/media.pages.inc
index ff101ff..577d5ef 100644
--- a/includes/media.pages.inc
+++ b/includes/media.pages.inc
@@ -169,6 +169,8 @@ function media_multiple_delete_confirm_submit($form, &$form_state) {
  * @todo: should use the AJAX uploader
  */
 function media_add_upload($form, &$form_state, $types = NULL) {
+  $params = media_get_browser_params();
+  $field_settings = $params['instance_settings'];
 
   $validators = array(
    'file_validate_extensions' => array(media_variable_get('file_extensions')),
@@ -193,6 +195,26 @@ function media_add_upload($form, &$form_state, $types = NULL) {
     unset($validators['file_validate_size']);
   }
 
+  // apply field settings
+  if (isset($field_settings['max_resolution'])) {
+    if (strlen($field_settings['max_resolution']) > 0 || strlen($field_settings['min_resolution']) > 0) {
+      $validators['file_validate_image_resolution'] = array($field_settings['max_resolution'], $field_settings['min_resolution']);
+    }
+  }
+
+  if ($types == NULL && isset($field_settings['file_extensions']) && strlen($field_settings['file_extensions']) > 0) {
+    $validators['file_validate_extensions'] = array($field_settings['file_extensions']);
+  }
+
+  if (isset($field_settings['max_filesize']) && strlen($field_settings['max_filesize']) > 0) {
+    $validators['file_validate_size'] = array($field_settings['max_filesize']);
+  }
+
+  // generic file settings
+  if(isset($field_settings['description_field']) && strlen($field_settings['description_field']) > 0) {
+
+  }
+
   $form['#validators'] = $validators;
 
   $form['upload'] = array(
@@ -232,10 +254,17 @@ function media_add_upload_validate($form, &$form_state) {
  * Upload a file.
  */
 function media_add_upload_submit($form, &$form_state) {
+  $params = media_get_browser_params();
+  $field_settings = $params['instance_settings'];
+
   $scheme = variable_get('file_default_scheme', 'public') . '://';
   $file = $form_state['values']['upload'];
+
   _media_save_file_permenently($file);
 
+  //if(isset($field_settings['file_directory']) && strlen($field_settings['file_directory']) > 0) {
+  //  $scheme .= $field_settings['file_directory'] . "/";
+  //}
   $destination = file_stream_wrapper_uri_normalize($scheme . $file->filename);
 
   $defaults = array(
