diff --git a/plugins/file.inc b/plugins/file.inc
index 6c127fc..d2e17fa 100644
--- a/plugins/file.inc
+++ b/plugins/file.inc
@@ -18,13 +18,17 @@ function file_export_alter(&$node) {
     if (isset($node->{$field_name})) {
       foreach ($node->{$field_name} as $lang => $items) {
         foreach ($items as $key => $item) {
-          $imgfile = drupal_realpath($item['uri']);
-          if ($imgfile && ($handle = fopen($imgfile, 'rb')) && (filesize($imgfile) > 0)) {
-            $imgbinary = fread($handle, filesize($imgfile));
-            $node->{$field_name}[$lang][$key]['image'] = base64_encode($imgbinary);
+          // If this is a remote file from media module, its size will be zero,
+          // so we don't encode the file and keep its file name.
+          if ($item['filesize']) {
+            $imgfile = drupal_realpath($item['uri']);
+            if ($imgfile && ($handle = fopen($imgfile, 'rb')) && (filesize($imgfile) > 0)) {
+              $imgbinary = fread($handle, filesize($imgfile));
+              $node->{$field_name}[$lang][$key]['image'] = base64_encode($imgbinary);
+            }          
+            $filename = $node->{$field_name}[$lang][$key]['filename'];
+            $node->{$field_name}[$lang][$key]['uri'] = 'public://' . $filename;
           }
-          $filename = $node->{$field_name}[$lang][$key]['filename'];
-          $node->{$field_name}[$lang][$key]['uri'] = 'public://' . $filename;
           unset($node->{$field_name}[$lang][$key]['fid']);
           unset($node->{$field_name}[$lang][$key]['uid']);
           unset($node->{$field_name}[$lang][$key]['timestamp']);
@@ -58,14 +62,23 @@ function file_import_alter(&$node) {
           if (!empty($fids) && isset($fids[0]) && is_object($fids[0])) {
             file_delete($fid[0]);
           }
-          $file = file_save_data($item['image'], $item['uri']);
-          // Decode image data. Older versions exported binary data
-          // so if this fails we asume that is the reason.
-          $data = base64_decode($item['image']);
-          if (!$data) {
-            $data = $item['image'];
+          // Should be a remote file from media module.
+          if (!isset($item['image']) && function_exists('file_uri_to_object')) {
+            $file = file_uri_to_object($item['uri']);
           }
-          $file = file_save_data($data, $item['uri']);
+          // Regular files.
+          else {
+            $file = file_save_data($item['image'], $item['uri']);
+            // Decode image data. Older versions exported binary data
+            // so if this fails we asume that is the reason.
+            $data = base64_decode($item['image']);
+            if (!$data) {
+              $data = $item['image'];
+            }
+            $file = file_save_data($data, $item['uri']);
+          }
+          // Reaffect file name.
+          $file->filename = $item['filename'];
           if ($field['type'] == 'image') {
             $file->alt = $item['alt'];
             $file->title = $item['title'];
