diff --git a/src/exporters/file.js b/src/exporters/file.js
index <HASH>..<HASH> 100644
--- a/src/exporters/file.js
+++ b/src/exporters/file.js
@@ -3,28 +3,33 @@
 const UnixFS = require('ipfs-unixfs')
 const pull = require('pull-stream')
 
-function extractContent (node) {
-  return UnixFS.unmarshal(node.data).data
-}
-
 // Logic to export a single (possibly chunked) unixfs file.
 module.exports = (node, name, ds) => {
+  const file = UnixFS.unmarshal(node.data)
   let content
 
   if (node.links.length === 0) {
-    const c = extractContent(node)
-    content = pull.values([c])
+    content = pull.values([file.data])
   } else {
     content = pull(
       pull.values(node.links),
       pull.map((link) => ds.getStream(link.hash)),
       pull.flatten(),
-      pull.map(extractContent)
+      pull.map((node) => {
+        try {
+          const ex = UnixFS.unmarshal(node.data)
+          return ex.data
+        } catch (err) {
+          console.error(node)
+          throw new Error('Failed to unmarshal node')
+        }
+      })
     )
   }
 
   return pull.values([{
     content: content,
-    path: name
+    path: name,
+    size: file.fileSize()
   }])
 }
feat(exporter): return file sizes