getDirectory() . "/imported/" . $ownerId; } //Copy the temporary file over to the "organize" folder so that it's off our webserver //and accessible by airtime_analyzer which could be running on a different machine. $newTempFilePath = Application_Model_StoredFile::moveFileToStor($filePath, $originalFilename, $copyFile); //Dispatch a message to airtime_analyzer through RabbitMQ, //notifying it that there's a new upload to process! $storageBackend = new ProxyStorageBackend($CC_CONFIG["current_backend"]); Application_Model_RabbitMq::SendMessageToAnalyzer($newTempFilePath, $importedStorageDirectory, basename($originalFilename), $callbackUrl, $apiKey, $CC_CONFIG["current_backend"], $storageBackend->getFilePrefix()); return $newTempFilePath; } /** * @param $fileId * @param bool $inline Set the Content-Disposition header to inline to prevent a download dialog from popping up (or attachment if false) * @throws Exception * @throws FileNotFoundException */ public static function streamFileDownload($fileId, $inline=false) { $media = Application_Model_StoredFile::RecallById($fileId); if ($media == null) { throw new FileNotFoundException(); } $filepath = $media->getFilePath(); // Make sure we don't have some wrong result beecause of caching clearstatcache(); if ($media->getPropelOrm()->isValidPhysicalFile()) { $filename = $media->getPropelOrm()->getFilename(); //Download user left clicks a track and selects Download. if (!$inline) { //We are using Content-Disposition to specify //to the browser what name the file should be saved as. header('Content-Disposition: attachment; filename="' . $filename . '"'); } else { //user clicks play button for track and downloads it. header('Content-Disposition: inline; filename="' . $filename . '"'); } $filepath = $media->getFilePath(); $size= $media->getFileSize(); $mimeType = $media->getPropelOrm()->getDbMime(); Application_Common_FileIO::smartReadFile($filepath, $size, $mimeType); exit; } else { throw new FileNotFoundException(); } } }