From 64a46f92e85d8940610e5be28af874c9a2a0e61b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kasper=20Garn=C3=A6s?= <kasper@reload.dk>
Date: Fri, 30 Sep 2011 12:51:39 +0200
Subject: [PATCH] Encode file data using Base64

---
 plugins/file.inc |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/plugins/file.inc b/plugins/file.inc
index 4aa7298..4f00e51 100644
--- a/plugins/file.inc
+++ b/plugins/file.inc
@@ -20,7 +20,7 @@ function file_export_alter(&$node) {
           $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'] = $imgbinary;
+            $node->{$field_name}[$lang][$key]['image'] = base64_encode($imgbinary);
           }
           $filename = $node->{$field_name}[$lang][$key]['filename'];
           $node->{$field_name}[$lang][$key]['uri'] = "public://$filename";
@@ -58,7 +58,13 @@ 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'];
+          }
+          $file = file_save_data($data, $item['uri']);
           if ($field['type'] == 'image') {
             $file->alt = $item['alt'];
             $file->title = $item['title'];
--
1.7.5.4+GitX