示例#1
0
 public function getDownload($id, $extension)
 {
     $track = Track::find($id);
     if (!$track || !$track->canView(Auth::user())) {
         App::abort(404);
     }
     $trackFile = TrackFile::findOrFailByExtension($track->id, $extension);
     ResourceLogItem::logItem('track', $id, ResourceLogItem::DOWNLOAD, $trackFile->getFormat()['index']);
     $response = Response::make('', 200);
     $filename = $trackFile->getFile();
     if (Config::get('app.sendfile')) {
         $response->header('X-Sendfile', $filename);
         $response->header('Content-Disposition', 'attachment; filename="' . $trackFile->getDownloadFilename() . '"');
     } else {
         $response->header('X-Accel-Redirect', $filename);
         $response->header('Content-Disposition', 'attachment; filename="' . $trackFile->getDownloadFilename() . '"');
     }
     $time = gmdate(filemtime($filename));
     if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $time == $_SERVER['HTTP_IF_MODIFIED_SINCE']) {
         header('HTTP/1.0 304 Not Modified');
         exit;
     }
     $response->header('Last-Modified', $time);
     $response->header('Content-Type', $trackFile->getFormat()['mime_type']);
     return $response;
 }