diff --git a/resources/node_resource.inc b/resources/node_resource.inc
index 928e09d..a9639d6 100644
--- a/resources/node_resource.inc
+++ b/resources/node_resource.inc
@@ -114,6 +114,104 @@ function _node_resource_definition() {
           'access arguments' => array('access content'),
         ),
       ),
+      'actions' => array(
+        'file_presave' => array(
+          'help' => 'Create temporary file(s) from a "multipart/form-data" posted form data. Must be attached to a node later or Drupal will automatically delete it after 6 hours. Requires: node_type and field_name.',
+          'file' => array('type' => 'inc', 'module' => 'services', 'name' => 'resources/node_resource'),
+          'callback' => '_node_resource_file_presave',
+           'access callback' => '_node_resource_access_true',
+//           'access arguments' => array('wo'),
+//           'access arguments append' => TRUE,
+          'args' => array(
+            array(
+              'name' => 'node_type',
+              'optional' => TRUE,
+              'type' => 'string',
+              'description' => 'The node type\'s machine_name that the field_name is associated with.',
+              'default value' => NULL,
+              'source' => 'data',
+              'optional' => FALSE,
+            ),
+            array(
+              'name' => 'field_name',
+              'optional' => TRUE,
+              'type' => 'string',
+              'description' => 'The machine name of the file field associated with the node type.',
+              'default value' => NULL,
+              'source' => array('data' => 'field_name'),
+              'optional' => FALSE,
+            ),
+          ),
+        ),
+        'file_presavedata' => array(
+          'help' => 'Creates a temporary file from base64 encoded data. Must be attached to a node later or Drupal will automatically delete it after 6 hours. Requires: node_type, field_name, file_name, file_data.',
+          'file' => array('type' => 'inc', 'module' => 'services', 'name' => 'resources/node_resource'),
+          'callback' => '_node_resource_file_presavedata',
+          'access callback' => '_node_resource_access',
+          'access arguments' => array('create'),
+          'access arguments append' => TRUE,
+          'args' => array(
+            array(
+              'name' => 'node_type',
+              'optional' => TRUE,
+              'type' => 'string',
+              'description' => 'The node type\'s machine_name that the field_name is associated with.',
+              'default value' => NULL,
+              'source' => 'data',
+            ),
+            array(
+              'name' => 'field_name',
+              'optional' => TRUE,
+              'type' => 'string',
+              'description' => 'The machine name of the file field associated with the node type.',
+              'default value' => NULL,
+              'source' => 'data',
+            ),
+            array(
+              'name' => 'file_name',
+              'optional' => TRUE,
+              'type' => 'string',
+              'description' => 'A string containing a filename that the file will be saved to.',
+              'default value' => NULL,
+              'source' => 'data',
+            ),
+            array(
+              'name' => 'file_data',
+              'optional' => TRUE,
+              'type' => 'string',
+              'description' => 'The base64 encoded data.',
+              'default value' => NULL,
+              'source' => 'data',
+            ),
+          ),
+        ),
+      ),
+      'targeted_actions' => array(
+        'attach_file' => array(
+          'help' => 'Upload and attach file(s) to a node. POST multipart/form-data to node/123/attach_file.json',
+          'file' => array('type' => 'inc', 'module' => 'services', 'name' => 'resources/node_resource'),
+          'callback' => '_node_resource_attach_file',
+          'args' => array(
+            array(
+              'name' => 'nid',
+              'optional' => FALSE,
+              'source' => array('path' => 0),
+              'type' => 'int',
+              'description' => 'The nid of the node to attach a file to',
+            ),
+            array(
+              'name' => 'field_name',
+              'optional' => TRUE,
+              'source' => array('data' => 'field_name'),
+              'description' => 'The file parameters',
+              'type' => 'string',
+            ),
+          ),
+          'access callback' => '_node_resource_access',
+          'access arguments' => array('update'),
+          'access arguments append' => TRUE,
+        ),
+      ),
       'relationships' => array(
         'files' => array(
           'file' => array('type' => 'inc', 'module' => 'services', 'name' => 'resources/node_resource'),
@@ -534,3 +632,212 @@ function _node_resource_load_node_comments($nid, $count = 0, $start = 0) {
 
   return !empty($cids) ? comment_load_multiple($cids) : array();
 }
+
+/**
+ * Attaches file(s) to an existing node based on nodeID, and the field's
+ * machine_name
+ *
+ * Example form element used to post files to attach_file:
+ * <form action="site.com/endpoint/node/1234/attach_file?field_name=field_machine_name"
+ * method="post" enctype="multipart/form-data">
+ * <input type="file" name="files[anything1]">
+ * <input type="file" name="files[anything2]">
+ *
+ * The name="files[anything]" format is required to use file_save_upload().
+ *
+ * @param $nid
+ *   Node ID of the node the file(s) is being attached to.
+ * @param $field_name
+ *   Machine name of the field that is attached to the node.
+ * @return
+ *   An array of files that were attached in the form:
+ *   array( array( fid=>N, uri=>public://path/to/file1), array( fid=>N,
+ *   uri=>public://path/to/file2) )
+ *
+ * @see file_save_upload()
+ * @see file
+ */
+function _node_resource_attach_file($nid, $field_name) {
+  global $user;
+  //Load the information for this field
+  $node = node_load($nid);
+  $field = field_read_field($field_name[0]);
+  $instance = field_read_instance('node', $field_name[0], $node->type);
+  $destination = file_field_widget_uri($field, $instance );
+
+  $validators = array(
+    'file_validate_extensions' =>  array(0 => $instance['settings']['file_extensions']),
+    'file_validate_size' => array(),
+  );
+
+  $files = array();
+  $counter=0;
+  foreach ($_FILES['files']['name'] as $key => $val) {
+
+    // let the file module handle the upload and moving.
+    if (!$file = file_save_upload($key, $validators, $destination, FILE_EXISTS_RENAME) ) {
+      return services_error(t('Failed to upload file. %upload', array('%upload' => $key)), 406);
+    }
+
+    // Required to be able to reference this file.
+    if ($file->fid) {
+      //Add the file to the node.
+      $node->{$field_name[0]}['und'][$counter] = (array)$file;
+      //Add info to the array that will be returned/encdoed to xml/json
+      $files[] = array(
+        'fid' => $file->fid,
+        'uri' => services_resource_uri(array('file', $file->fid)),
+      );
+    }
+    else {
+      return services_error(t('An unknown error occurred'), 500);
+    }
+
+    $counter++;
+    //Check if the  maximum number of files for this field has been reached. A
+    //cardinality of -1 (unlimited) will never match
+    if ($field['cardinality'] == $counter ) { break; }
+  }
+  node_save($node);
+
+  return $files;
+}
+
+/**
+ * Attaches file id(s) to an existing node based on nodeID, and the field's
+ * machine_name.
+ *
+ * Example form element used to post files to attach_file:
+ * <form action="site.com/endpoint/node/1234/attach_file?field_name=field_machine_name"
+ * method="post" enctype="multipart/form-data">
+ * <input type="file" name="files[anything1]">
+ * <input type="file" name="files[anything2]">
+ *
+ * The name="files[anything]" format is required to use file_save_upload().
+ *
+ * @param $nid
+ *   Node ID of the node the file(s) is being attached to.
+ * @param $field_name
+ *   Machine name of the field that is attached to the node.
+ * @return
+ *   An array of files that were attached in the form:
+ *   array( array( fid=>N, uri=>public://path/to/file1), array( fid=>N,
+ *   uri=>public://path/to/file2) )
+ *
+ * @see file_save_upload()
+ * @see file
+ */
+function _node_resource_attach_fileid($nid, $field_name) {
+}
+
+/**
+ * Uses a node's file field to save a file.
+ *
+ * @param $node_type
+ *   The unique machine name identifier for a node type.
+ * @param $field_name
+ *   Machine name of the file field on the above node type.
+ * @return
+ *   An array of the file(s) saved.
+ */
+function _node_resource_file_presave($node_type, $field_name) {
+  global $user;
+  //Load the information for this field
+
+  if ( !$instance = field_read_instance('node', $field_name, $node_type) ) {
+    return services_error(t('Bad field name or node type'), 406);
+  }
+  $field = field_read_field($field_name);
+  $destination = file_field_widget_uri($field, $instance );
+
+  $validators = array(
+    'file_validate_extensions' =>  array(0 => $instance['settings']['file_extensions']),
+    'file_validate_size' => array(),
+  );
+
+  //Check $_FILES to make sure
+
+  $files = array();
+  $counter=0;
+  foreach ($_FILES['files']['name'] as $key => $val) {
+
+    // let the file module handle the upload and moving.
+    if (!$file = file_save_upload($key, $validators, $destination, FILE_EXISTS_RENAME) ) {
+      return services_error(t('Failed to upload file. %upload', array('%upload' => $key)), 406);
+    }
+
+    if ($file->fid) {
+      //Add info to the array that will be returned/encdoed to xml/json
+      $files[] = array(
+        'fid' => $file->fid,
+        'uri' => services_resource_uri(array('file', $file->fid)),
+        //'uuid' => services_resource_uri(array('file', $file->uuid)),
+      );
+    }
+    else {
+      return services_error(t('An unknown error occurred'), 500);
+    }
+
+    $counter++;
+    //Check if the  maximum number of files for this field has been reached. A
+    //cardinality of -1 (unlimited) will never match
+    if ($field['cardinality'] == $counter ) { break; }
+  }
+
+  return $files;
+}
+
+/**
+ * Uses a node's file field to save a base64 encoded file.
+ *
+ * @param $node_type
+ *   The unique machine name identifier for a node type.
+ * @param $field_name
+ *   Machine name of the file field on the above node type.
+ * @param $file_name
+ *   The filename the data should be stored into.
+ * @param $file_data
+ *   The data of the file.
+ * @return
+ *   An array of the file(s) saved.
+ */
+function _node_resource_file_presavedata($node_type, $field_name, $file_name, $file_data) {
+  global $user;
+
+  //Load the information for this field
+  if ( !$instance = field_read_instance('node', $field_name, $node_type) ) {
+    return services_error(t('Bad field name or node type'), 406);
+  }
+  $field = field_read_field($field_name);
+  $destination = file_field_widget_uri($field, $instance );
+
+  $validators = array(
+    'file_validate_extensions' =>  array(0 => $instance['settings']['file_extensions']),
+    'file_validate_size' => array(),
+  );
+
+  $files = array();
+
+  // let the file module handle the upload and moving.
+  if (!$file = file_save_upload($key, $validators, $destination, FILE_EXISTS_RENAME) ) {
+    return services_error(t('Failed to upload file. %upload', array('%upload' => $key)), 406);
+  }
+
+  if ($file->fid) {
+    //Add info to the array that will be returned/encdoed to xml/json
+    $files[] = array(
+      'fid' => $file->fid,
+      'uri' => services_resource_uri(array('file', $file->fid)),
+      //'uuid' => services_resource_uri(array('file', $file->uuid)),
+    );
+  }
+  else {
+    return services_error(t('An unknown error occurred'), 500);
+  }
+
+  return $files;
+}
+
+function _node_resource_access_true() {
+  return true;
+}
\ No newline at end of file
diff --git a/servers/rest_server/includes/RESTServer.inc b/servers/rest_server/includes/RESTServer.inc
index a456b76..55adb99 100755
--- a/servers/rest_server/includes/RESTServer.inc
+++ b/servers/rest_server/includes/RESTServer.inc
@@ -471,7 +471,7 @@ class RESTServer {
   }
 
   public static function parseMultipart() {
-    return $_POST;
+    return $_FILES;
   }
 
   public static function parseYAML($handle) {
