aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mod/file/actions/download.php26
-rw-r--r--mod/file/languages/en.php1
2 files changed, 25 insertions, 2 deletions
diff --git a/mod/file/actions/download.php b/mod/file/actions/download.php
index 4ea08ae84..19ef86d90 100644
--- a/mod/file/actions/download.php
+++ b/mod/file/actions/download.php
@@ -8,9 +8,31 @@
* @link http://elgg.com/
*/
-
+ // Get the guid
$file_guid = get_input("file_guid");
+ // Get the file
+ $file = get_entity($file_guid);
- echo "$file_guid";
+ if ($file)
+ {
+ $mime = $file->getMimeType();
+ if (!$mime) $mime = "application/octet-stream";
+
+ $filename = $file->getFilename();
+
+ header("Content-type: $mime");
+ header("Content-Disposition: attachment; filename=\"$filename\"");
+
+ $file->open("read");
+
+ while (!$file->eof())
+ {
+ echo $file->read(10240, $file->tell());
+ }
+
+ $file->close();
+ }
+ else
+ system_message(elgg_echo("file:downloadfailed"));
?> \ No newline at end of file
diff --git a/mod/file/languages/en.php b/mod/file/languages/en.php
index 451680430..eeae1de02 100644
--- a/mod/file/languages/en.php
+++ b/mod/file/languages/en.php
@@ -37,6 +37,7 @@
*/
'file:uploadfailed' => "Sorry; we could not save your file.",
+ 'file:downloadfailed' => "Sorry; this file is not available at this time.",
);