{% if build == 'dev' %}
{% note alert "TO-DO не выгружается на prod" %}
- не указаны типы параметров
- не указана обязательность параметров
- отсутствует ответ в случае ошибки
{% endnote %}
{% endif %}
{% note warning "Мы еще обновляем эту страницу" %}
Тут может не хватать некоторых данных — дополним в ближайшее время
{% endnote %}
Scope:
disk
Кто может выполнять метод: любой пользователь
Метод disk.folder.uploadfile
загружает новый файл в указанную папку.
#|
|| Параметр / Тип| Описание ||
|| id
unknown
| Идентификатор папки. В текущем API загружать файл по пути к папке невозможно. Необходимо обязательно вычислить ID
папки. ||
|| fileContent
unknown
| Аналогично DETAIL_PICTURE
в примере Обработка файлов. ||
|| data
unknown
| Массив, описывающий файл. Обязательное поле NAME
— имя нового файла. Доступно отправка файла в виде строки, закодированной в base64. ||
|| generateUniqueName
unknown
| Необязательный, по умолчанию false
. При указании true
для загружаемого файла будет уникализировано имя добавлением суффикса (1), (2) и т.п. Пример: avatar (1).jpg, avatar (2).jpg. ||
|| rights
unknown
| Необязательный, по умолчанию пустой массив. Массив прав доступа на загружаемый файл. ||
|#
{% note info %}
Обратите внимание, что список доступных идентификаторов TASK_ID
для установки прав можно получить методом disk.rights.getTasks
{% endnote %}
{% list tabs %}
-
JS
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 }, { TASK_ID: 38, ACCESS_CODE: 'U2' // доступ для пользователя с ID=2 } ] }, function (result) { if (result.error()) console.error(result.error()); else console.dir(result.data()); } );
{% endlist %}
{% include Сноска о примерах %}
- Вызываем
/rest/disk.folder.uploadFile
и передаем методу толькоID
папки.disk.folder.uploadFile?auth=n2423m863oil59f99c9g0bm4918l5erz&id=289
- В ответ получаем параметр
UploadUrl
и параметрfield
."result": { "field": "file", "uploadUrl": "http://b24.sigurd.bx/rest/upload.json?auth=n2423m863oil59f99c9g0bm4918l5erz&token=disk%7CaWQ9Mjg5Jl89QkYzazEzaXNnUjNHcVZQcDJZaGxGRmI4TGhXOG5EZXQ%3D%7CInVwbG9hZHxkaXNrfGFXUTlNamc1Smw4OVFrWXphekV6YVhOblVqTkhjVlpRY0RKWmFHeEdSbUk0VEdoWE9HNUVaWFE9fG4yNDIzbTg2M29pbDU5Zjk5YzlnMGJtNDkxOGw1ZXJ6Ig%3D%3D.Aga709nyY0%2BrFiv3laHjfg6XuOO5JT6ttjU%2F53ifphM%3D" }
- На полученный
UploadUrl
посылаем POST-запрос вmultipart/form-data
, в котором передаем файл в поле с именем, полученном в параметреfield
.http --form POST "http://b24.sigurd.bx/rest/upload.json?auth=n2423m863oil59f99c9g0bm4918l5erz&token=disk%7CaWQ9Mjg5Jl89QkYzazEzaXNnUjNHcVZQcDJZaGxGRmI4TGhXOG5EZXQ%3D%7CInVwbG9hZHxkaXNrfGFXUTlNamc1Smw4OVFrWXphekV6YVhOblVqTkhjVlpRY0RKWmFHeEdSbUk0VEdoWE9HNUVaWFE9fG4yNDIzbTg2M29pbDU5Zjk5YzlnMGJtNDkxOGw1ZXJ6Ig%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%7CImRvd25sb2FkfGRpc2t8YVdROU1qa3dKbDg5WlRJNE1HOVRjRFpDUW5vMk1EQXdWbVYzY25Sa2JXeExNMmhMTjBKd2VFcz18bjI0MjNtODYzb2lsNTlmOTljOWcwYm00OTE4bDVlcnoi.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" }
{% list tabs %}
-
PHP (crest)
<?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>'; ?>
{% endlist %}
200 OK
В случае успеха возвращает структуру, аналогичную disk.file.get.