diff --git a/file_entity.info b/file_entity.info
index 542532d..a230176 100644
--- a/file_entity.info
+++ b/file_entity.info
@@ -9,6 +9,9 @@ files[] = views/views_handler_argument_file_type.inc
 files[] = views/views_handler_field_file_rendered.inc
 files[] = views/views_handler_field_file_type.inc
 files[] = views/views_handler_filter_file_type.inc
+files[] = views/views_handler_field_file_link.inc
+files[] = views/views_handler_field_file_link_edit.inc
+files[] = views/views_handler_field_file_link_delete.inc
 files[] = views/views_plugin_row_file_view.inc
 files[] = tests/file_entity.test
 configure = admin/structure/file-types
diff --git a/file_entity.views.inc b/file_entity.views.inc
index 905a96d..d60d9fb 100644
--- a/file_entity.views.inc
+++ b/file_entity.views.inc
@@ -41,6 +41,48 @@ function file_entity_views_data() {
     ),
   );
 
+  // View link.
+  $data['file_managed']['link'] = array(
+    'title' => t('Link'),
+    'help' => t('Provide a simple link to the file entity.'),
+    'field' => array(
+      'handler' => 'views_handler_field_file_link',
+      'click sortable' => TRUE,
+      'real field' => 'fid',
+      'additional fields' => array(
+        'fid',
+      ),
+    ),
+  );
+
+  // Edit link.
+  $data['file_managed']['edit'] = array(
+    'title' => t('Edit link'),
+    'help' => t('Provide a simple link to edit the file entity.'),
+    'field' => array(
+      'handler' => 'views_handler_field_file_link_edit',
+      'click sortable' => TRUE,
+      'real field' => 'fid',
+      'additional fields' => array(
+        'fid',
+      ),
+    ),
+  );
+
+  // Delete link.
+  $data['file_managed']['delete'] = array(
+    'title' => t('Delete link'),
+    'help' => t('Provide a simple link to delete the file entity.'),
+    'field' => array(
+      'handler' => 'views_handler_field_file_link_delete',
+      'click sortable' => TRUE,
+      'real field' => 'fid',
+      'additional fields' => array(
+        'fid',
+      ),
+    ),
+  );
+
   return $data;
 }
 
diff --git a/views/views_handler_field_file_link.inc b/views/views_handler_field_file_link.inc
new file mode 100644
index 0000000..5a23314
--- /dev/null
+++ b/views/views_handler_field_file_link.inc
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_file_link.
+ */
+
+/**
+ * Field handler to present a link to the file.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_file_link extends views_handler_field_entity {
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['text'] = array('default' => '', 'translatable' => TRUE);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    $form['text'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text to display'),
+      '#default_value' => $this->options['text'],
+    );
+    parent::options_form($form, $form_state);
+
+    // The path is set by render_link function so don't allow to set it.
+    $form['alter']['path'] = array('#access' => FALSE);
+    $form['alter']['external'] = array('#access' => FALSE);
+  }
+
+  function render($values) {
+    if ($entity = $this->get_value($values)) {
+      return $this->render_link($entity, $values);
+    }
+  }
+
+  function render_link($file, $values) {
+    if (file_entity_access('view')) {
+      $this->options['alter']['make_link'] = TRUE;
+      $this->options['alter']['path'] = "file/$file->fid";
+      $text = !empty($this->options['text']) ? $this->options['text'] : t('View');
+      return $text;
+    }
+  }
+}
diff --git a/views/views_handler_field_file_link_delete.inc b/views/views_handler_field_file_link_delete.inc
new file mode 100644
index 0000000..903cbd0
--- /dev/null
+++ b/views/views_handler_field_file_link_delete.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_file_link_delete.
+ */
+
+/**
+ * Field handler to present a link to delete a file.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_file_link_delete extends views_handler_field_file_link {
+
+  /**
+   * Renders the link.
+   */
+  function render_link($file, $values) {
+    // Ensure user has access to delete this file.
+    if (!file_entity_access('edit')) {
+      return;
+    }
+
+    $this->options['alter']['make_link'] = TRUE;
+    $this->options['alter']['path'] = "file/$file->fid/delete";
+    $this->options['alter']['query'] = drupal_get_destination();
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('Delete');
+    return $text;
+  }
+}
diff --git a/views/views_handler_field_file_link_edit.inc b/views/views_handler_field_file_link_edit.inc
new file mode 100644
index 0000000..f0f4451
--- /dev/null
+++ b/views/views_handler_field_file_link_edit.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_file_link_edit.
+ */
+
+/**
+ * Field handler to present a link file edit.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_file_link_edit extends views_handler_field_file_link {
+
+  /**
+   * Renders the link.
+   */
+  function render_link($file, $values) {
+    // Ensure user has access to edit this file.
+    if (!file_entity_access('edit')) {
+      return;
+    }
+
+    $this->options['alter']['make_link'] = TRUE;
+    $this->options['alter']['path'] = "file/$file->fid/edit";
+    $this->options['alter']['query'] = drupal_get_destination();
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('Edit');
+    return $text;
+  }
+}
