diff --git views/filefield.views.inc views/filefield.views.inc
index 8bc22ff..f35dc11 100644
--- views/filefield.views.inc
+++ views/filefield.views.inc
@@ -11,6 +11,27 @@
  * @{
  */
 
+
+/**
+ * Implementation of hook_views_data()
+ */
+function filefield_views_data() {
+  $data = array();
+
+  // Extend the files table with an icon field.
+  $data['files']['icon'] = array(
+    'title' => t('Icon'),
+    'help' => t('An icon corresponding to the file MIME type.'),
+    'real field' => 'filemime',
+    'field' => array(
+      'handler' => 'filefield_handler_field_icon',
+      'click sortable' => FALSE,
+     ),
+  );
+
+  return $data;
+}
+
 /**
  * Implementation of hook_views_handlers().
  */
@@ -24,6 +45,9 @@
       'filefield_handler_field_data' => array(
         'parent' => 'views_handler_field_node',
       ),
+      'filefield_handler_field_icon' => array(
+        'parent' => 'views_handler_field',
+      ),
     ),
   );
 }
diff --git views/filefield_handler_field_icon.inc views/filefield_handler_field_icon.inc
new file mode 0
index 0000000..cecea83 0
--- /dev/null
+++ views/filefield_handler_field_icon.inc
@@ -0,0 +1,25 @@
+<?php
+/**
+ * @file
+ * Returns a file icon based on its MIME type.
+ */
+
+class filefield_handler_field_icon extends views_handler_field {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['fid'] = 'fid';
+    $this->additional_fields['filename'] = 'filename';
+    $this->additional_fields['filesize'] = 'filesize';
+  }
+
+  function render($values) {
+    $value = $this->get_value($values);
+    $pseudo_file = array(
+      'fid' => $this->get_value($values, 'fid'),
+      'filemime' => $value,
+      'filename' => $this->get_value($values, 'filename'),
+      'filesize' => $this->get_value($values, 'filesize'),
+    );
+    return theme('filefield_icon', $pseudo_file);
+  }
+}
