mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-26 05:37:27 +02:00
B24: Загрузка файла в каталог
This commit is contained in:
parent
e1e548b60f
commit
6a1df8917e
File diff suppressed because it is too large
Load Diff
@ -1217,6 +1217,59 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Загрузить файл в каталог
|
||||
// Загружает переданный файл в каталог
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
|
||||
// Наименование - Строка - Наименование файла с расширением для сохранения - title
|
||||
// Файл - Строка, ДвоичныеДанные - Файл для загрузки - file
|
||||
// IDКаталога - Строка - Идентификатор каталога для загрузки - folderid
|
||||
// Токен - Строка - Токен авторизации, если используется не вебхук - token
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
|
||||
Функция ЗагрузитьФайлВКаталог(Знач URL
|
||||
, Знач Наименование
|
||||
, Знач Файл
|
||||
, Знач IDКаталога
|
||||
, Знач Токен = "") Экспорт
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||
|
||||
Параметры = НормализоватьАвторизацию(URL, Токен, "disk.folder.uploadFile");
|
||||
OPI_Инструменты.ДобавитьПоле("id", IDКаталога, "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
Результат = Ответ["result"];
|
||||
|
||||
Если ЗначениеЗаполнено(Результат) Тогда
|
||||
|
||||
ИмяПоля = Результат["field"];
|
||||
URLЗагрузки = Результат["uploadUrl"];
|
||||
|
||||
Если ЗначениеЗаполнено(ИмяПоля) И ЗначениеЗаполнено(URLЗагрузки) Тогда
|
||||
|
||||
ИмяПоля = СокрЛП(ИмяПоля);
|
||||
URLЗагрузки = СокрЛП(URLЗагрузки);
|
||||
ИмяФайла = ИмяПоля + "|" + Наименование;
|
||||
|
||||
СоответствиеФайла = Новый Соответствие;
|
||||
СоответствиеФайла.Вставить(ИмяФайла, Файл);
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart(URLЗагрузки, , СоответствиеФайла);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра каталога
|
||||
// Возвращает структуру полей для фильтрации дочерних элементов каталога
|
||||
//
|
||||
|
@ -1,21 +1,21 @@
|
||||
<package-def>
|
||||
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
|
||||
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
||||
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
|
||||
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
|
||||
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
||||
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
|
||||
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
|
||||
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
|
||||
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
||||
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
|
||||
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
|
||||
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
|
||||
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
|
||||
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
|
||||
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
||||
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
|
||||
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
||||
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
||||
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
||||
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
||||
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
||||
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
|
||||
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
|
||||
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
|
||||
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
|
||||
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
|
||||
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
||||
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
|
||||
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
|
||||
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
|
||||
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
|
||||
</package-def>
|
||||
|
@ -2934,13 +2934,14 @@
|
||||
Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста);
|
||||
Bitrix24_СоздатьПодкаталог(ПараметрыТеста);
|
||||
Bitrix24_КопироватьКаталог(ПараметрыТеста);
|
||||
Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста);
|
||||
Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста);
|
||||
Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста);
|
||||
Bitrix24_ПереместитьКаталог(ПараметрыТеста);
|
||||
Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста);
|
||||
Bitrix24_ВосстановитьКаталог(ПараметрыТеста);
|
||||
Bitrix24_УдалитьКаталог(ПараметрыТеста);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@ -7245,6 +7246,43 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции)
|
||||
|
||||
Наименование2 = "Картинка2.jpg";
|
||||
Наименование = "Картинка1.jpg";
|
||||
|
||||
Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные
|
||||
Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные
|
||||
|
||||
IDПриемника = ПараметрыФункции["Bitrix24_FolderID"];
|
||||
|
||||
URL = ПараметрыФункции["Bitrix24_URL"];
|
||||
|
||||
Результат = OPI_Bitrix24.ЗагрузитьФайлВКаталог(URL, Наименование2, Картинка2, IDПриемника);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайлВКаталог (хук)", "Bitrix24");
|
||||
|
||||
Проверка_БитриксФайл(Результат); // SKIP
|
||||
|
||||
IDФайла = Результат["result"]["ID"]; // SKIP
|
||||
OPI_Bitrix24.УдалитьФайл(URL, IDФайла); // SKIP
|
||||
|
||||
URL = ПараметрыФункции["Bitrix24_Domain"];
|
||||
Токен = ПараметрыФункции["Bitrix24_Token"];
|
||||
|
||||
Результат = OPI_Bitrix24.ЗагрузитьФайлВКаталог(URL, Наименование, Картинка, IDПриемника, Токен);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайлВКаталог", "Bitrix24");
|
||||
|
||||
Проверка_БитриксФайл(Результат);
|
||||
|
||||
IDФайла = Результат["result"]["ID"];
|
||||
Результат = OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexDisk
|
||||
|
@ -817,6 +817,33 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РазобратьКлючФайла(Знач ДанныеФайла, Знач ТипКонтента)
|
||||
|
||||
ЗаменаТочки = "___";
|
||||
ИмяФайла = СтрЗаменить(ДанныеФайла, ЗаменаТочки, ".");
|
||||
МассивИмени = СтрРазделить(ИмяФайла, "|", Ложь);
|
||||
|
||||
Если МассивИмени.Количество() = 2 Тогда
|
||||
ИмяПоля = МассивИмени[0];
|
||||
ИмяФайла = МассивИмени[1];
|
||||
Иначе
|
||||
|
||||
Если ТипКонтента = "image/jpeg" Тогда
|
||||
ИмяПоля = "photo";
|
||||
Иначе
|
||||
ИмяПоля = Лев(ИмяФайла, СтрНайти(ИмяФайла, ".") - 1);
|
||||
ИмяПоля = ?(ЗначениеЗаполнено(ИмяПоля), ИмяПоля, СтрЗаменить(ДанныеФайла,
|
||||
ЗаменаТочки, "."));
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураВозврата = Новый Структура("ИмяПоля,ИмяФайла", ИмяПоля, ИмяФайла);
|
||||
|
||||
Возврат СтруктураВозврата;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьТелоЗапроса(Запрос, Знач Параметры, Знач JSON)
|
||||
|
||||
Коллекция = ТипЗнч(Параметры) = Тип("Структура")
|
||||
@ -883,26 +910,19 @@
|
||||
|
||||
ТипКонтента = СокрЛП(ТипКонтента);
|
||||
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||
ЗаменаТочки = "___";
|
||||
|
||||
|
||||
Для Каждого Файл Из Файлы Цикл
|
||||
|
||||
ПутьФайл = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
|
||||
|
||||
Если ТипКонтента = "image/jpeg" Тогда
|
||||
ИмяФайлаОтправки = "photo";
|
||||
Иначе
|
||||
ИмяФайлаОтправки = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||
ИмяФайлаОтправки = Лев(ИмяФайлаОтправки, СтрНайти(ИмяФайлаОтправки, ".") - 1);
|
||||
ИмяФайлаОтправки = ?(ЗначениеЗаполнено(ИмяФайлаОтправки), ИмяФайлаОтправки, СтрЗаменить(Файл.Ключ,
|
||||
ЗаменаТочки, "."));
|
||||
КонецЕсли;
|
||||
ИмяПоля = СтруктураИнформации["ИмяПоля"];
|
||||
ИмяФайла = СтруктураИнформации["ИмяФайла"];
|
||||
|
||||
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name="""
|
||||
+ ИмяФайлаОтправки
|
||||
+ ИмяПоля
|
||||
+ """; filename="""
|
||||
+ ПутьФайл
|
||||
+ ИмяФайла
|
||||
+ """");
|
||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||
|
||||
|
@ -1217,6 +1217,59 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Загрузить файл в каталог
|
||||
// Загружает переданный файл в каталог
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
|
||||
// Наименование - Строка - Наименование файла с расширением для сохранения - title
|
||||
// Файл - Строка, ДвоичныеДанные - Файл для загрузки - file
|
||||
// IDКаталога - Строка - Идентификатор каталога для загрузки - folderid
|
||||
// Токен - Строка - Токен авторизации, если используется не вебхук - token
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
|
||||
Функция ЗагрузитьФайлВКаталог(Знач URL
|
||||
, Знач Наименование
|
||||
, Знач Файл
|
||||
, Знач IDКаталога
|
||||
, Знач Токен = "") Экспорт
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||
|
||||
Параметры = НормализоватьАвторизацию(URL, Токен, "disk.folder.uploadFile");
|
||||
OPI_Инструменты.ДобавитьПоле("id", IDКаталога, "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
Результат = Ответ["result"];
|
||||
|
||||
Если ЗначениеЗаполнено(Результат) Тогда
|
||||
|
||||
ИмяПоля = Результат["field"];
|
||||
URLЗагрузки = Результат["uploadUrl"];
|
||||
|
||||
Если ЗначениеЗаполнено(ИмяПоля) И ЗначениеЗаполнено(URLЗагрузки) Тогда
|
||||
|
||||
ИмяПоля = СокрЛП(ИмяПоля);
|
||||
URLЗагрузки = СокрЛП(URLЗагрузки);
|
||||
ИмяФайла = ИмяПоля + "|" + Наименование;
|
||||
|
||||
СоответствиеФайла = Новый Соответствие;
|
||||
СоответствиеФайла.Вставить(ИмяФайла, Файл);
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart(URLЗагрузки, , СоответствиеФайла);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра каталога
|
||||
// Возвращает структуру полей для фильтрации дочерних элементов каталога
|
||||
//
|
||||
|
@ -817,6 +817,33 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РазобратьКлючФайла(Знач ДанныеФайла, Знач ТипКонтента)
|
||||
|
||||
ЗаменаТочки = "___";
|
||||
ИмяФайла = СтрЗаменить(ДанныеФайла, ЗаменаТочки, ".");
|
||||
МассивИмени = СтрРазделить(ИмяФайла, "|", Ложь);
|
||||
|
||||
Если МассивИмени.Количество() = 2 Тогда
|
||||
ИмяПоля = МассивИмени[0];
|
||||
ИмяФайла = МассивИмени[1];
|
||||
Иначе
|
||||
|
||||
Если ТипКонтента = "image/jpeg" Тогда
|
||||
ИмяПоля = "photo";
|
||||
Иначе
|
||||
ИмяПоля = Лев(ИмяФайла, СтрНайти(ИмяФайла, ".") - 1);
|
||||
ИмяПоля = ?(ЗначениеЗаполнено(ИмяПоля), ИмяПоля, СтрЗаменить(ДанныеФайла,
|
||||
ЗаменаТочки, "."));
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураВозврата = Новый Структура("ИмяПоля,ИмяФайла", ИмяПоля, ИмяФайла);
|
||||
|
||||
Возврат СтруктураВозврата;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьТелоЗапроса(Запрос, Знач Параметры, Знач JSON)
|
||||
|
||||
Коллекция = ТипЗнч(Параметры) = Тип("Структура")
|
||||
@ -883,26 +910,19 @@
|
||||
|
||||
ТипКонтента = СокрЛП(ТипКонтента);
|
||||
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||
ЗаменаТочки = "___";
|
||||
|
||||
|
||||
Для Каждого Файл Из Файлы Цикл
|
||||
|
||||
ПутьФайл = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
|
||||
|
||||
Если ТипКонтента = "image/jpeg" Тогда
|
||||
ИмяФайлаОтправки = "photo";
|
||||
Иначе
|
||||
ИмяФайлаОтправки = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||
ИмяФайлаОтправки = Лев(ИмяФайлаОтправки, СтрНайти(ИмяФайлаОтправки, ".") - 1);
|
||||
ИмяФайлаОтправки = ?(ЗначениеЗаполнено(ИмяФайлаОтправки), ИмяФайлаОтправки, СтрЗаменить(Файл.Ключ,
|
||||
ЗаменаТочки, "."));
|
||||
КонецЕсли;
|
||||
ИмяПоля = СтруктураИнформации["ИмяПоля"];
|
||||
ИмяФайла = СтруктураИнформации["ИмяФайла"];
|
||||
|
||||
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name="""
|
||||
+ ИмяФайлаОтправки
|
||||
+ ИмяПоля
|
||||
+ """; filename="""
|
||||
+ ПутьФайл
|
||||
+ ИмяФайла
|
||||
+ """");
|
||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||
|
||||
|
@ -2934,13 +2934,14 @@
|
||||
Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста);
|
||||
Bitrix24_СоздатьПодкаталог(ПараметрыТеста);
|
||||
Bitrix24_КопироватьКаталог(ПараметрыТеста);
|
||||
Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста);
|
||||
Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста);
|
||||
Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста);
|
||||
Bitrix24_ПереместитьКаталог(ПараметрыТеста);
|
||||
Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста);
|
||||
Bitrix24_ВосстановитьКаталог(ПараметрыТеста);
|
||||
Bitrix24_УдалитьКаталог(ПараметрыТеста);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@ -7245,6 +7246,43 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции)
|
||||
|
||||
Наименование2 = "Картинка2.jpg";
|
||||
Наименование = "Картинка1.jpg";
|
||||
|
||||
Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные
|
||||
Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные
|
||||
|
||||
IDПриемника = ПараметрыФункции["Bitrix24_FolderID"];
|
||||
|
||||
URL = ПараметрыФункции["Bitrix24_URL"];
|
||||
|
||||
Результат = OPI_Bitrix24.ЗагрузитьФайлВКаталог(URL, Наименование2, Картинка2, IDПриемника);
|
||||
|
||||
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайлВКаталог (хук)", "Bitrix24");
|
||||
|
||||
Проверка_БитриксФайл(Результат); // SKIP
|
||||
|
||||
IDФайла = Результат["result"]["ID"]; // SKIP
|
||||
OPI_Bitrix24.УдалитьФайл(URL, IDФайла); // SKIP
|
||||
|
||||
URL = ПараметрыФункции["Bitrix24_Domain"];
|
||||
Токен = ПараметрыФункции["Bitrix24_Token"];
|
||||
|
||||
Результат = OPI_Bitrix24.ЗагрузитьФайлВКаталог(URL, Наименование, Картинка, IDПриемника, Токен);
|
||||
|
||||
// END
|
||||
|
||||
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайлВКаталог", "Bitrix24");
|
||||
|
||||
Проверка_БитриксФайл(Результат);
|
||||
|
||||
IDФайла = Результат["result"]["ID"];
|
||||
Результат = OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область YandexDisk
|
||||
|
Loading…
x
Reference in New Issue
Block a user