diff --git a/core/modules/aggregator/aggregator-item.tpl.php b/core/modules/aggregator/aggregator-item.tpl.php
index e9ad1e0..74aa9e5 100644
--- a/core/modules/aggregator/aggregator-item.tpl.php
+++ b/core/modules/aggregator/aggregator-item.tpl.php
@@ -36,10 +36,19 @@
   </div>
 <?php endif; ?>
 
+<?php if (isset($enclosure_url)) : ?>
+  <div class="feed-item-enclosure">
+    <em><?php print t('Media Files'); ?>:</em> <a href="<?php print $enclosure_url; ?> class="feed-item-enclosure-url"><?php print $enclosure_path; ?></a>
+    <span class="feed-item-enclosure-type">(<?php print $enclosure_type?>,</span>
+    <span class="feed-item-enclosure-length"><?php print $enclosure_length?>)</span>
+ </div>
+<?php endif; ?>
+
 <?php if ($categories): ?>
   <div class="feed-item-categories">
     <?php print t('Categories'); ?>: <?php print implode(', ', $categories); ?>
   </div>
 <?php endif ;?>
 
+
 </div>
diff --git a/core/modules/aggregator/aggregator.install b/core/modules/aggregator/aggregator.install
index eecd14f..b96ebd8 100644
--- a/core/modules/aggregator/aggregator.install
+++ b/core/modules/aggregator/aggregator.install
@@ -252,6 +252,24 @@ function aggregator_schema() {
         'size' => 'big',
         'description' => 'Body of the feed item.',
       ),
+      'enclosure_url' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => t('URL to the enclosure.'),
+      ),
+      'enclosure_length' => array(
+        'type' => 'int',
+        'not null' => FALSE,
+        'description' => t('Length of the enclosure in bytes.'),
+      ),
+      'enclosure_type' => array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => FALSE,
+        'description' => t('Type of the enclosure, should be a standard MIME type.'),
+      ),
       'timestamp' => array(
         'type' => 'int',
         'not null' => FALSE,
@@ -278,3 +296,24 @@ function aggregator_schema() {
 
   return $schema;
 }
+
+/**
+ * @addtogroup updates-7.x-to-8.x
+ * @{
+ */
+
+/**
+ * Add enclosure related fields to aggregator_item table.
+ */
+function aggregator_update_8000() {
+  $ret = array();
+  db_add_field('aggregator_item', 'enclosure_url', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''));
+  db_add_field('aggregator_item', 'enclosure_length', array('type' => 'int', 'not null' => FALSE));
+  db_add_field('aggregator_item', 'enclosure_type', array('type' => 'varchar', 'length' => 32, 'not null' => FALSE));
+
+  return $ret;
+}
+/**
+ * @} End of "addtogroup updates-7.x-to-8.x"
+ * The next series of updates should start at 9000.
+ */
diff --git a/core/modules/aggregator/aggregator.pages.inc b/core/modules/aggregator/aggregator.pages.inc
index 228953b..e332c9b 100644
--- a/core/modules/aggregator/aggregator.pages.inc
+++ b/core/modules/aggregator/aggregator.pages.inc
@@ -295,6 +295,13 @@ function template_preprocess_aggregator_item(&$variables) {
     $variables['source_date'] = format_date($item->timestamp, 'custom', variable_get('date_format_medium', 'D, m/d/Y - H:i'));
   }
 
+  if (!empty($item->enclosure_url)) {
+    $variables['enclosure_url'] = check_url($item->enclosure_url);
+    $variables['enclosure_path'] = basename(parse_url(check_url($item->enclosure_url), PHP_URL_PATH));
+    $variables['enclosure_length'] = aggregate_enclosure_size($item->enclosure_length);
+    $variables['enclosure_type'] = $item->enclosure_type;
+  }
+
   $variables['categories'] = array();
   foreach ($item->categories as $category) {
     $variables['categories'][$category->cid] = l($category->title, 'aggregator/categories/' . $category->cid);
@@ -302,6 +309,23 @@ function template_preprocess_aggregator_item(&$variables) {
 }
 
 /**
+ * Aggregate_enclosure_size; calculates the human readable media size.
+ */
+function aggregate_enclosure_size($bytes) {
+    $size = $bytes / 1024;
+    if($size < 1024) {
+      $size = number_format($size, 2).' KB';
+    }
+    elseif ($size / 1024 < 1024) {
+      $size = number_format($size / 1024, 2).' MB';
+    }
+    elseif ($size / 1024 / 1024 < 1024) {
+      $size = number_format($size / 1024 / 1024, 2).' GB';
+    }
+    return $size;
+}
+
+/**
  * Menu callback; displays all the feeds used by the aggregator.
  */
 function aggregator_page_sources() {
diff --git a/core/modules/aggregator/aggregator.parser.inc b/core/modules/aggregator/aggregator.parser.inc
index 556f3d3..4cd82d7 100644
--- a/core/modules/aggregator/aggregator.parser.inc
+++ b/core/modules/aggregator/aggregator.parser.inc
@@ -92,7 +92,7 @@ function aggregator_parse_feed(&$data, $feed) {
   $feed->items = array();
   foreach ($items as $item) {
 
-    // Prepare the item:
+    // Prepare the item.
     foreach ($item as $key => $value) {
       $item[$key] = trim($value);
     }
@@ -134,6 +134,13 @@ function aggregator_parse_feed(&$data, $feed) {
       $item['description'] = $item['content'];
     }
 
+    // Set enclosure information.
+    if (!isset($item['enclosure_url'])) {
+      $item['enclosure_url'] = '';
+      $item['enclosure_length'] = 0;
+      $item['enclosure_type'] = '';
+    }
+
     // Try to resolve and parse the item's publication date.
     $date = '';
     foreach (array('pubdate', 'dc:date', 'dcterms:issued', 'dcterms:created', 'dcterms:modified', 'issued', 'created', 'modified', 'published', 'updated') as $key) {
@@ -180,6 +187,13 @@ function aggregator_element_start($parser, $name, $attributes) {
     case 'info':
       $element = $name;
       break;
+    case 'enclosure':
+      if ($element == 'item' && !empty($attributes['URL']) && !empty($attributes['LENGTH']) && !empty($attributes['TYPE'])) {
+        $items[$item]['enclosure_url'] = $attributes['URL'];
+        $items[$item]['enclosure_length'] = $attributes['LENGTH'];
+        $items[$item]['enclosure_type'] = $attributes['TYPE'];
+      }
+      break;
     case 'id':
     case 'content':
       if ($element != 'item') {
diff --git a/core/modules/aggregator/aggregator.processor.inc b/core/modules/aggregator/aggregator.processor.inc
index 79261b6..a73e899 100644
--- a/core/modules/aggregator/aggregator.processor.inc
+++ b/core/modules/aggregator/aggregator.processor.inc
@@ -40,8 +40,7 @@ function aggregator_aggregator_process($feed) {
 
         // Make sure the item title fits in 255 varchar column.
         $item['title'] = truncate_utf8($item['title'], 255, TRUE, TRUE);
-        aggregator_save_item(array('iid' => (isset($entry->iid) ? $entry->iid : ''), 'fid' => $feed->fid, 'timestamp' => $item['timestamp'], 'title' => $item['title'], 'link' => $item['link'], 'author' => $item['author'], 'description' => $item['description'], 'guid' => $item['guid']));
-      }
+        aggregator_save_item(array('iid' => (isset($entry->iid) ? $entry->iid : ''), 'fid' => $feed->fid, 'timestamp' => $item['timestamp'], 'title' => $item['title'], 'link' => $item['link'], 'author' => $item['author'], 'description' => $item['description'], 'enclosure_url' => $item['enclosure_url'], 'enclosure_length' => $item['enclosure_length'], 'enclosure_type' => $item['enclosure_type'], 'guid' => $item['guid']));     }
     }
   }
 }
@@ -146,6 +145,9 @@ function aggregator_save_item($edit) {
         'link' => $edit['link'],
         'author' => $edit['author'],
         'description' => $edit['description'],
+        'enclosure_url' => $edit['enclosure_url'],
+        'enclosure_length' => $edit['enclosure_length'],
+        'enclosure_type' => $edit['enclosure_type'],
         'guid' => $edit['guid'],
         'timestamp' => $edit['timestamp'],
         'fid' => $edit['fid'],
@@ -161,7 +163,7 @@ function aggregator_save_item($edit) {
       ->execute();
   }
   elseif ($edit['title'] && $edit['link']) {
-    // file the items in the categories indicated by the feed
+    // File the items in the categories indicated by the feed.
     $result = db_query('SELECT cid FROM {aggregator_category_feed} WHERE fid = :fid', array(':fid' => $edit['fid']));
     foreach ($result as $category) {
       db_merge('aggregator_category_item')
