diff options
-rw-r--r-- | mod/file/actions/download.php | 26 | ||||
-rw-r--r-- | mod/file/languages/en.php | 1 |
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.", ); |