- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/uf/controller.php
- Класс: BitrixDiskUfController
- Вызов: Controller::processActionDownload
protected function processActionDownload($showFile = false)
{
$attachedModel = $this->getAttachedModel();
$file = $attachedModel->getFile();
if (!$file)
{
$this->sendJsonErrorResponse();
}
$fileName = $file->getName();
$fileData = $file->getFile();
$version = $attachedModel->getVersion();
if ($version)
{
$fileName = $version->getName();
$fileData = $version->getFile();
}
$isImage = TypeFile::isImage($fileData['ORIGINAL_NAME']) || TypeFile::isImage($fileName);
$isImage = $isImage && !TypeFile::shouldTreatImageAsFile($fileData);
$cacheTime = $isImage ? 86400 : Configuration::DEFAULT_CACHE_TIME;
if ($isImage)
{
$fileData = $this->resizeImage($fileData, $attachedModel->getId());
}
else
{
$trackedObjectManager = Driver::getInstance()->getTrackedObjectManager();
$trackedObjectManager->pushAttachedObject($this->getUser()->getId(), $attachedModel, true);
}
if ($isImage && $showFile && $attachedModel->getConnector()->isAnonymousAllowed())
{
$response = BitrixMainContext::getCurrent()->getResponse();
$response->addHeader("X-Bitrix-Public-Link", "img");
}
CFile::viewByUser($fileData, array('force_download' => !$showFile, 'cache_time' => $cacheTime, 'attachment_name' => $fileName));
}