diff options
Diffstat (limited to 'mod/attach.php')
-rw-r--r-- | mod/attach.php | 18 |
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(); |