Отправка файла методом POST с указание параметра body
Здравствуйте, спецы!
Прошу помощи, подскажите, пожалуйста, как в 1С сформировать запрос такого вида:
curl -u user:password \
-X POST \
-F "body=D:\Отправляемый файл.docx" \
https://nekiy_server.ru/api/v1/service/attachments/
Не понимаю как реализовать в 1С -F "body=D:\Отправляемый файл.docx"
ЗапросPOSTФайл = Новый HTTPЗапрос();
ЗапросPOSTФайл.АдресРесурса = "nekiy_server.ru";
//как-то в запрос засунуть тело: -F "body=D:\Отправляемый файл.docx"
HTTPСоединение = Новый HTTPСоединение("nekiy_server.ru",, user, password,,, Новый ЗащищенноеСоединениеOpenSSL());
Результат = HTTPСоединение.ОтправитьДляОбработки(ЗапросPOSTФайл);
Прошу помощи, подскажите, пожалуйста, как в 1С сформировать запрос такого вида:
curl -u user:password \
-X POST \
-F "body=D:\Отправляемый файл.docx" \
Не понимаю как реализовать в 1С -F "body=D:\Отправляемый файл.docx"
ЗапросPOSTФайл = Новый HTTPЗапрос();
ЗапросPOSTФайл.АдресРесурса = "nekiy_server.ru";
//как-то в запрос засунуть тело: -F "body=D:\Отправляемый файл.docx"
HTTPСоединение = Новый HTTPСоединение("nekiy_server.ru",, user, password,,, Новый ЗащищенноеСоединениеOpenSSL());
Результат = HTTPСоединение.ОтправитьДляОбработки(ЗапросPOSTФайл);
По теме из базы знаний
Найденные решения
(4) Благодарю за помощь, но мне не помогло. Решилась проблема таким образом: импортировал curl-запрос в Postman и посмотрел code snippet для http:
POST /api/v1/attachments/ HTTP/1.1
Host: nekiy_server.ru
Authorization: Basic
*****************тут логин и пароль******************
Content-Length: 264
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="body"; filename="/D:/Temp/Отправляемый файл.docx"
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Т.к. в curl-е "-F "body=D:\Отправляемый файл.docx"" соответствует "Content-Type: multipart/form-data",
то реализация вида (ниже) сработала:
POST /api/v1/attachments/ HTTP/1.1
Host: nekiy_server.ru
Authorization: Basic
*****************тут логин и пароль******************
Content-Length: 264
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="body"; filename="/D:/Temp/Отправляемый файл.docx"
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Т.к. в curl-е "-F "body=D:\Отправляемый файл.docx"" соответствует "Content-Type: multipart/form-data",
то реализация вида (ниже) сработала:
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + "body" + "; filename=""" + ФайлОтправки.ИмяФайла + """");
ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/msword");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.Записать(ДвДанные);
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
ЗапросPOSTФайл.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
ЗапросPOSTФайл.Заголовки.Вставить("Content-Length", XMLСтрока(ДанныеТела.Размер()));
ЗапросPOSTФайл.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + разделитель);
Результат = HTTPСоединение.ОтправитьДляОбработки(ЗапросPOSTФайл);
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) СтруктураФайла - атрибуты для json.
{
"name": "NamtOfFile",
"body": "-------------------"
}
{
"name": "NamtOfFile",
"body": "-------------------"
}
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураФайла;
СтрокаJSON = ЗаписьJSON.Закрыть();
.....
HTTPЗапрос = Новый HTTPЗапрос(Адрес);
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
..........
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать
(4) Благодарю за помощь, но мне не помогло. Решилась проблема таким образом: импортировал curl-запрос в Postman и посмотрел code snippet для http:
POST /api/v1/attachments/ HTTP/1.1
Host: nekiy_server.ru
Authorization: Basic
*****************тут логин и пароль******************
Content-Length: 264
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="body"; filename="/D:/Temp/Отправляемый файл.docx"
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Т.к. в curl-е "-F "body=D:\Отправляемый файл.docx"" соответствует "Content-Type: multipart/form-data",
то реализация вида (ниже) сработала:
POST /api/v1/attachments/ HTTP/1.1
Host: nekiy_server.ru
Authorization: Basic
*****************тут логин и пароль******************
Content-Length: 264
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="body"; filename="/D:/Temp/Отправляемый файл.docx"
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Т.к. в curl-е "-F "body=D:\Отправляемый файл.docx"" соответствует "Content-Type: multipart/form-data",
то реализация вида (ниже) сработала:
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + "body" + "; filename=""" + ФайлОтправки.ИмяФайла + """");
ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/msword");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.Записать(ДвДанные);
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
ЗапросPOSTФайл.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
ЗапросPOSTФайл.Заголовки.Вставить("Content-Length", XMLСтрока(ДанныеТела.Размер()));
ЗапросPOSTФайл.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + разделитель);
Результат = HTTPСоединение.ОтправитьДляОбработки(ЗапросPOSTФайл);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот