--- views_upload.inc	Wed Dec 23 12:32:35 2009
+++ views_upload.inc	Wed Dec 23 12:32:14 2009
@@ -106,6 +106,18 @@
         'sortable' => true,
         'help' => t('This filter allows nodes to be filtered by mime type.'),
       ),
+      'description' => array(
+        'field' => 'description',
+        'name' => t('File: Description'),
+        'notafield' => true,
+        'query_handler' => 'views_query_handler_file_description',
+        'handler' => array(
+          'views_handler_file_description' => t('Plain'),
+          'views_handler_file_description_download' => t('With download link'),
+        ),
+        'sortable' => true,
+        'help' => t('Display file description'),
+      ),
     ),
     'filters' => array(
       'filename' => array(
@@ -139,6 +151,11 @@
         'name' => t('File: Mime type'),
         'help' => t('Sort by mime type.'),
       ),
+	  'description' => array(
+        'name' => t('File: Description'),
+        'help' => t('Sort by file description.'),
+		'handler' => 'views_node_sort_handler_file_description',
+      ),
     ),
   );
   return $tables;
@@ -202,4 +219,21 @@
 
 function views_handler_file_listed_files($fieldinfo, $fielddata, $value, $data) {
   return views_handler_file_all_files($fieldinfo, $fielddata, $value, $data, TRUE);
+}
+
+function views_node_sort_handler_file_description($action, &$query, $sortinfo, $sort) {
+  $query->orderby[] = "file_revisions.description $sort[sortorder]";
+}
+
+function views_handler_file_description($fieldinfo, $fielddata, $value, $data) {
+  return $data->description;
+}
+
+function views_query_handler_file_description($field, $fieldinfo, &$query) {
+  $query->add_field('description', 'file_revisions');
+  $query->add_field('filepath', 'files');
+}
+
+function views_handler_file_description_download($fieldinfo, $fielddata, $value, $data) {
+  return l($data->description, check_url(file_create_url($data->filepath)));
 }
