aboutsummaryrefslogtreecommitdiffstats
path: root/mod/attach.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/attach.php')
-rw-r--r--mod/attach.php18
1 files changed, 16 insertions, 2 deletions
diff --git a/mod/attach.php b/mod/attach.php
index a5f9d1a6b..c52966ce0 100644
--- a/mod/attach.php
+++ b/mod/attach.php
@@ -17,10 +17,24 @@ function attach_init(&$a) {
return;
}
+ $c = q("select channel_address from channel where channel_id = %d limit 1",
+ intval($r['data']['uid'])
+ );
+
+ if(! $c)
+ return;
+
header('Content-type: ' . $r['data']['filetype']);
header('Content-disposition: attachment; filename=' . $r['data']['filename']);
- if($r['data']['flags'] & ATTACH_FLAG_OS )
- echo @file_get_contents($r['data']['data']);
+ if($r['data']['flags'] & ATTACH_FLAG_OS ) {
+ $istream = fopen('store/' . $c[0]['channel_address'] . '/' . $r['data']['data'],'rb');
+ $ostream = fopen('php://output','wb');
+ if($istream && $ostream) {
+ pipe_streams($istream,$ostream);
+ fclose($istream);
+ fclose($ostream);
+ }
+ }
else
echo $r['data']['data'];
killme();