|
Как передать файл из 1С через http-сервис? |
☑ |
0
Prog111
13.06.19
✎
09:44
|
С http-сервисами знаком слабо, возник такой вопрос:
Имеется http-сервис. В нём есть URL-шаблон. В шаблоне есть метод с типом GET с обработчиком. При обращении с сайта к 1С в модуле происходит формирование информации (в текстовом виде), которая преобразуется в json и отправляется в виде ответа на сайт обратно. Вот конечная часть процедуры:
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписатьJSON(ЗаписьJSON, МассивСтрок);
СтрокаДляОтвета = ЗаписьJSON.Закрыть();
Ответ = СформироватьHTTPОтвет(200,СтрокаДляОтвета);
Возврат Ответ;
КонецФункции
А вот как в качестве ответа в дополнении к JSON передать заранее сформированный средствами 1С файл (например, *.pdf)? Поискал в интернете - как-то вообще не нашёл информации, везде про загрузку на сайт примеры приведены, но не про отдачу файла в ответе.
|
|
1
Tonik992
13.06.19
✎
09:47
|
Самый простой способ - в base64 помещайте двоичные данные.
|
|
2
Pro1001C
13.06.19
✎
09:47
|
|
|
3
Prog111
13.06.19
✎
09:52
|
(2) Вот в этом случае не могу понять: в примерах везде такая конструкция:
Соединение = Новый HTTPСоединение(";);
Но ведь у http-сервиса другой поток: Сайт обращается к веб-серверу 1С, с определенным параметром. И по этому параметру 1С возвращает ответ (json текстовый).
Как тогда в ответе присобачить "Новый HTTPСоединение"?
|
|
4
dka80
13.06.19
✎
10:07
|
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Disposition", СтрШаблон("attachment; filename=""%1""", ИмяФайла));
Ответ.Заголовки.Вставить("Content-Type", "application/octet-stream");
Ответ.УстановитьТелоИзДвоичныхДанных(РаботаСФайламиВызовСервера.ПолучитьДвоичныеДанныеФайла(ФайлСсылка));
|
|
5
dka80
13.06.19
✎
10:11
|
+4
Возврат Ответ;
|
|
6
Юрий Лазаренко
13.06.19
✎
10:27
|
(0) Если в дополнение к JSON, то как сказано в (1) файл переводить в двоичные данные, к МассивСтрок перед конвертацией его в JSON добавить эти двоичные данные и потом передать в ответе.
|
|