Документация для разработчиков
Темная тема

disk.file.get

Scope: disk Права на выполнение: для всех

Описание

disk.file.get

Возвращает файл по идентификатору.

Важно. Ссылка на загрузку файла из параметра DOWNLOAD_URL содержит токен авторизации и предназначена для скачивания файла от имени приложения. Нельзя "раздавать" эту ссылку или использовать для публичных интерфейсов.

Пример ответа:

"result": {
	"ID": "10", //идентификатор
	"NAME": "2511.jpg", //название файла
	"CODE": null, //символьный код
	"STORAGE_ID": "4", //идентификатор хранилища
	"TYPE": "file",
	"PARENT_ID": "8", //идентификатор родительской папки
	"DELETED_TYPE": "0", //маркер удаления
	"CREATE_TIME": "2015-04-24T10:41:51+03:00", //время создания
	"UPDATE_TIME": "2015-04-24T15:52:43+03:00", //время изменения
	"DELETE_TIME": null, //время перемещения в корзину
	"CREATED_BY": "1", //идентификатор пользователя, который создал файл
	"UPDATED_BY": "1", //идентификатор пользователя, который изменил файл
	"DELETED_BY": "0", //идентификатор пользователя, который переместил в корзину файл
	"DOWNLOAD_URL": "https://test.bitrix24.ru/disk/downloadFile/10/?&ncc=1&filename=2511.jpg&auth=******", 
//возвращает url для скачивания файла приложением
	"DETAIL_URL": "https://test.bitrix24.ru/workgroups/group/3/disk/file/2511.jpg" 
//ссылка на страницу детальной информации о файле
}


Параметры

Параметр Описание
id Идентификатор файла.

Пример

BX24.callMethod(
	"disk.file.get",
	{
		id: 10
	},
	function (result)
	{
		if (result.error())
			console.error(result.error());
		else
			console.dir(result.data());
	}
);




Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Никита Суворов
Сообщение не промодерировано, возможны ошибки и неточности.
Разработчикам: если не работает метод disk.file.get стоит попробовать disk.attachedObject.get с теми же параметрами
0
Денис Максимов
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
На данный момент часто встречается проблема, не могу воспользоваться ни одним из методов этого модуля.
Пишет ошибку Access denied!
Есть ли кто-то , кто встречался с таким и обошел проблему?
Права для вебхука выставлены для работы с диском, так что уже сломали голову!
Пообщался с технической поддержкой битрикса, они подсказали решение, в итоге для себя сделал вот так:
Код
<?php
    //Получение файла битрикс
    foreach ($_REQUEST['data']['PARAMS']['FILES'] as $fileArray) {
        $webhookRest = "https://мой_сайт/rest/7/секретный_ключ/";
        $queryUrl = $webhookRest . 'disk.file.get.json';
        $queryData = http_build_query(array(
            "id" => $fileArray['id'],
        ));
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_SSL_VERIFYPEER => 0,
            CURLOPT_POST => true,
            CURLOPT_HEADER => 0,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL => $queryUrl,
            CURLOPT_POSTFIELDS => $queryData,
        ));
        $result = curl_exec($curl);
        curl_close($curl);
    }
    $arResult = json_decode($result, true);

    //адрес файла из чата
    $arImg = $arResult['result']['DOWNLOAD_URL'];
    $randNameTemp  = 'file_' . mt_rand() . time();
    $path = dirname(__DIR__, 1) . '/temporary_files/';
    file_put_contents($path. $randNameTemp, fopen($arImg, 'r') );
    $mime_content_type = mime_content_type($path. $randNameTemp);

    $arNameExtension = explode(".", current($_REQUEST['data']['PARAMS']['FILES'])['name']);
    $extensionFile = $arNameExtension[count($arNameExtension)-1];
    $nameFile="";
    for ($i = 0; $i <= count($arNameExtension)-2; $i++) {
        $nameFile = $nameFile . $arNameExtension[$i];
    }

    //получить пользователя чата
    $resultUser = CRest::call(
        'user.get',
        [
            "ID" => $_REQUEST['data']['USER']['ID']
        ], _REQUEST["auth"]);

// Создаём объект CURLFile
    $urlFile = 'https://'. $_SERVER['HTTP_HOST'] . '/local/сайт_приложения/project/компания/название_проекта/temporary_files/' . $randNameTemp;
    $fileName = $randNameTemp . "." . $extensionFile;
    $cfile = new CURLFile($urlFile, $mime_content_type, $fileName);

    $user_id = 836; //тестовый пользователь

    $arData = array(
        //    "title" => "поле title",
        'user_id' => $user_id,
        "text" =>  $nameFile,
        "files[]" => $cfile
    );
    //  $data_json = json_encode($arData);
    $data['ID'] = 10218; //тикет

    $ch = curl_init('https://hell.сайт_куда_отправляю_файл.ru/api/v2/tickets/' . $data['ID'] . '/posts/');
    $headers = array(
        "Authorization: Basic FGh394#jopjodpv*jbdscbfjdjewkllJJhfdkdhjhefvKKJGGd2324gshj",
        "Cache-Control: no-cache",
        'Content-Type: multipart/form-data',
        //    'Content-Length: ' . strlen($data_json)
    );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $arData);
    $response = curl_exec($ch);  //отправка запроса
    curl_close($ch);

    //удалить загруженный файл
    unlink($path. $randNameTemp);
Мой способ работает только для владельца веб хука, любой другой  пользователь получить сообщение 'Access denied' при выполнении метода  'disk.file.get.json'.
1
Денис Черечукин
Для файлов, которые загружены в дополнительное поле типа "Файл" этот метод будет возвращать:

{"error":"ERROR_NOT_FOUND","error_description":"Could not find entity with id "4386886"."}
потому что файл загружен в основное хранилище портала, а не в Диск.

Решение для скачивания файла:
1. Установить Серверное локальное приложение без интерфейса в Битрикс24 по инструкции с правами disk.
2. Через API этого приложения получить сущность с заполненными дополнительными поле типа "Файл".

Значения поле будет выглядеть так:
Код
    [UF_CRM_11111111111] => Array
        (
            [id] => 4444
            [showUrl] => /bitrix/components/bitrix/crm.lead.show/show_file.php?ownerId=6666&fieldName=UF_CRM_11111111111&dynamic=Y&fileId=4444
            [downloadUrl] => /bitrix/components/bitrix/crm.lead.show/show_file.php?auth=eeeeeeeeeee&ownerId=6666&fieldName=UF_CRM_11111111111&dynamic=Y&fileId=4444
        )
По ссылке downloadUrl можно скачать файл.
1
Юрий (Пермь) Колбин
Разработчикам: При выполнении запроса наименование поля 'id' чувствительно к регистру. Будьте внимательны.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024