disk.folder.uploadfile
Scope: disk Права на выполнение: для всех
Описание
disk.folder.uploadfile
Загружает новый файл в указанную папку.
В случае успеха возвращает структуру, аналогичную disk.file.get.
Параметры
Параметр | Описание |
---|---|
id | Идентификатор папки. В текущем API загружать файл по пути к папке невозможно. Необходимо обязательно вычислить ID папки. |
fileContent | Аналогично 'DETAIL_PICTURE' в примере Обработка файлов. |
data | Массив, описывающий файл. Обязательное поле NAME - имя нового файла. Доступно отправка файла в виде строки, закодированной в base64. |
generateUniqueName | Необязательный, по умолчанию false. При указании true, для загружаемого файла будет уникализировано имя, добавлением
суффикса (1), (2)
Пример: avatar (1).jpg avatar (2).jpg и т.п. |
rights | Необязательный, по умолчанию пустой массив. Массив прав доступа на загружаемый файл. |
Примеры
Обратите внимание, что список доступных идентификаторов `TASK_ID` для установки прав можно получить rest-методом disk.rights.getTasks:
BX24.callMethod( "disk.folder.uploadfile", { id: 4, data: { NAME: "avatar.jpg" }, fileContent: document.getElementById('test_file_input'), generateUniqueName: true, rights: [ { TASK_ID: 42, ACCESS_CODE: 'U35' //доступ для пользователя с ID=35, для получения названия типа доступа можно воспользоваться https://dev.1c-bitrix.ru/rest_help/general/access_name.php }, { TASK_ID: 38, ACCESS_CODE: 'U2' //доступ для пользователя с ID=35, для получения названия типа доступа можно воспользоваться https://dev.1c-bitrix.ru/rest_help/general/access_name.php } ] }, function (result) { if (result.error()) console.error(result.error()); else console.dir(result.data()); } );
Пример прямой загрузки файла на Диск
- Первым делом вызываем /rest/disk.folder.uploadFile и передаем методу только ID папки:
- В ответ получаем параметр UploadUrl и параметр field:
- На полученный UploadUrl посылаем POST-запрос в multipart/form-data, в котором передаем файл в поле с именем, полученном в параметре field:
- В ответ получаем данные о загруженном файле:
disk.folder.uploadFile?auth=n2423m863oil59f99c9g0bm4918l5erz&id=289
"result": { "field": "file", "uploadUrl": "http://b24.sigurd.bx/rest/upload.json?auth=n2423m863oil59f99c9g0bm4918l5erz&token=disk%7CaWQ9Mjg5Jl89QkYzazEzaXNnUjNHcVZQcDJZaGxGRmI4TGhXOG5EZXQ%3D%7CInVwbG9hZHxkaXNrfGFXUTlNamc1Smw4OVFrWXphekV6YVhOblVqTkhjV lpRY0RKWmFHeEdSbUk0VEdoWE9HNUVaWFE9fG4yNDIzbTg2M29pbDU5Zjk5YzlnMGJtNDkxOGw1ZXJ6Ig%3D%3D.Aga709nyY0%2BrFiv3laHjfg6XuOO5JT6ttjU%2F53ifphM%3D" }
http --form POST "http://b24.sigurd.bx/rest/upload.json?auth=n2423m863oil59f99c9g0bm4918l5erz&token=disk%7CaWQ9Mjg5Jl89QkYzazEzaXNnUjNHcVZQcDJZaGxGRmI4TGhXOG5EZXQ%3D%7CInVwbG9hZHxkaXNrfGFXUTlNamc1Smw4OVFrWXp hekV6YVhOblVqTkhjVlpRY0RKWmFHeEdSbUk0VEdoWE9HNUVaWFE9fG4yNDIzbTg2M29pbDU5Zjk5YzlnMGJtNDkxOGw1ZXJ6Ig%3D%3D.Aga709nyY0%2BrFiv3laHjfg6XuOO5JT6ttjU%2F53ifphM%3D" file@~/somelongfile.log
"result": { "CODE": null, "CREATED_BY": "1", "CREATE_TIME": "2016-03-30T14:30:41+02:00", "DELETED_BY": null, "DELETED_TYPE": 0, "DELETE_TIME": null, "DETAIL_URL": "http://b24.sigurd.bx/company/personal/user/1/disk/file/Тестируем REST/somelongfile.log", "DOWNLOAD_URL": "http://b24.sigurd.bx/rest/download.json?auth=n2423m863oil59f99c9g0bm4918l5erz&token=disk%7CaWQ9MjkwJl89ZTI4MG9TcDZCQno2MDAwVmV3cnRkbWxLM2hLN0JweEs%3D%7CImRvd25sb2FkfGRpc2t8YVdROU1qa3dKbDg5WlRJNE1HOVRjRFpD UW5vMk1EQXdWbVYzY25Sa2JXeExNMmhMTjBKd2VFcz18bjI0MjNtODYzb2lsNTlmOTljOWcwYm00OTE4bDVlcnoi.QlpUpx4mG9sxeyMyholPfdgkoXgc9kK9gtbOagqSo7s%3D", "FILE_ID": 209, "GLOBAL_CONTENT_VERSION": 1, "ID": 290, "NAME": "somelongfile.log", "PARENT_ID": "289", "SIZE": "496136787", "STORAGE_ID": "1", "TYPE": "file", "UPDATED_BY": "1", "UPDATE_TIME": "2016-03-30T14:30:43+02:00" }
Как загрузить файл через UploadUrl на php
<?php require_once (__DIR__.'/crest.php'); $path = __DIR__ . '/pic.jpg'; $folderId = 1; $result = []; if (file_exists($path)) { $file = CRest::call( 'disk.folder.uploadfile', [ 'id' => $folderId, ] ); if (!empty($file['result']['uploadUrl'])) { $info = pathinfo($path); if ($info['basename']) { $delimiter = '-------------' . uniqid('', true); $name = $info['basename']; $mime = mime_content_type($path); $content = file_get_contents($path); $body = '--' . $delimiter. "\r\n"; $body .= 'Content-Disposition: form-data; name="file"'; $body .= '; filename="' . $name . '"' . "\r\n"; $body .= 'Content-Type: ' . $mime . "\r\n\r\n"; $body .= $content . "\r\n"; $body .= "--" . $delimiter . "--\r\n"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $file['result']['uploadUrl']); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $body); curl_setopt( $ch, CURLOPT_HTTPHEADER, [ 'Content-Type: multipart/form-data; boundary=' . $delimiter, 'Content-Length: ' . strlen($body), ] ); $out = curl_exec($ch); try { $result = json_decode($out, true, 512, JSON_THROW_ON_ERROR); } catch (JsonException $e) { $result = [ 'error' => $e->getMessage(), ]; } } } } echo '<pre>'; print_r($result); echo '</pre>';
© «Битрикс», 2001-2024, «1С-Битрикс», 2024