Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Отправка картинки через POST и параметры в формате JSON 1c

Отправка картинки через POST и параметры в формате JSON 1c
Я
   Ruslan_culeiman
 
01.02.18 - 15:55
Приветствую, помогите кто в теме, надо отправить post картинку с параметрами в формате JSON, не могу понять куда пихать строку JSON:

    ИмяФайлаОтправки = ПолучитьимяВременногоФайла("txt");
    Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаОтправки);
    
    ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
    ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""photo.jpg""");
    ЗаписьТекста.ЗаписатьСтроку("Content-Type: image/jpeg");
    ЗаписьТекста.ЗаписатьСтроку("");
    ЗаписьТекста.Записать(Base64Строка(Новый ДвоичныеДанные(ИмяФайлаДанных)));
    ЗаписьТекста.ЗаписатьСтроку("");
    ЗаписьТекста.ЗаписатьСтроку("--"+boundary+"--");
    ЗаписьТекста.Закрыть();
    
    ФайлОтправки        = Новый Файл(ИмяФайлаОтправки);
    РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
    
    // передадим данные на сервер 

    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-Type", "multipart/form-data, boundary="+boundary);
    Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);
    
                        
    ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина);
    Запись = Новый ЗаписьJSON;
    Запись.ПроверятьСтруктуру = Истина;
    Запись.УстановитьСтроку(ПараметрыJSON);
    
    Запись.ЗаписатьНачалоОбъекта();        
    
    Запись.ЗаписатьИмяСвойства("id");
    Запись.ЗаписатьЗначение(Код);
    Запись.ЗаписатьКонецОбъекта();
    
    СтрокаJSON = Запись.Закрыть();
    
    ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
    
    Если СтруктураНастроек.ЗащищенноеСоединение Тогда
        Порт = 443;
        Соединение = Новый ЗащищенноеСоединениеOpenSSL;
    Иначе
        Порт = 80;
        Соединение = Неопределено;
    КонецЕсли;    
    
    HTTPСоединение = Новый HTTPСоединение(СтруктураНастроек.Сервер, Порт, СтруктураНастроек.Логин, СтруктураНастроек.Пароль,,,Соединение);
    Результат      = HTTPСоединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "/api/import/files/", ИмяФайлаОтвета, Заголовки);
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.ОткрытьФайл(ИмяФайлаОтвета);
    Данные = ПрочитатьJSON(ЧтениеJSON, Ложь); 
    ЧтениеJSON.Закрыть();
 
 
   Ruslan_culeiman
 
1 - 01.02.18 - 16:36
UP
   dezss
 
2 - 01.02.18 - 16:43
Так это ж ты куда-то отправляешь, вот там пусть тебе и ответят.
Вообще обычно его в тело пихают, но у тебя там файл.
Может в тот файл и свой json запихай.
   drcrasher
 
3 - 01.02.18 - 16:44
(2) а не логичнее картинку в джейсон сложить? всё равно бейс64строка
   dezss
 
4 - 01.02.18 - 16:45
(3) да какая разница что логичнее, важно как это будут разбирать на принимающей стороне.
   Сергиус
 
5 - 01.02.18 - 16:59
(0)УстановитьТелоИзДвоичныхДанных(<Данные>), можно попробовать эту функцию.
   dezss
 
6 - 01.02.18 - 17:01
(5) он и так тело из файла устанавливает...он не знает, куда бы еще и json запихать, насколько я понял...
   Ruslan_culeiman
 
7 - 01.02.18 - 17:09
ребят я кину описание, может я не правильно понял
https://cdn1.savepice.ru/uploads/2018/2/1/8e9586df9d1435d1fc004eef2b4a609e-full.jpg
   Ruslan_culeiman
 
8 - 01.02.18 - 17:16
там уже не json, а обычный multipart form data. В ответ прийдет ID сущность, вот этот ID необходимо отправлять в PUT запросе как {"file": id}
а вот ответ тех. поддержки
   dezss
 
9 - 01.02.18 - 17:20
(8) ничего не понятно.
1) ты отправляешь файл,
2) тебе приходит его id,
3) ты следом отправляешь его id?
   drcrasher
 
10 - 01.02.18 - 17:25
(9) ну чо не ясно то?
1. отправляют картинку на сервак
2. сервак принимает картинку и возвращает айди
3. этот айди нужно вставить среди прочих букв с джейсон и пульнуть его на сервер
4. ....
5. профит
 
 Рекламное место пустует
   dezss
 
11 - 01.02.18 - 17:27
(10) а сам сервак не знает тот айди, который он возвращает для этого файла?
   dezss
 
12 - 01.02.18 - 17:27
(10) + кстати, у тебя до профита должен еще быть пункт с кальсонами)))
   drcrasher
 
13 - 01.02.18 - 17:30
(10) сервак обязан всех помнить чтоле?
он вернул айди временного файла, с которым клиент должен что-то сделать. для этого и возвращается/передаётся айди файла. имя там, описание товара, ещё чонить, фиг знает, что у тс за задача стоит.
не прислал запрос с айдишником - крон подумал и через некоторое время грохнул временный файл
   drcrasher
 
14 - 01.02.18 - 17:30
(13) -> (11)
   dezss
 
15 - 01.02.18 - 17:33
(13) так изначально ТС-у было сказано, уточнить у сервака, что именно ему надо
   Ruslan_culeiman
 
16 - 02.02.18 - 14:02
подскажите: отправляю картинку, а сервер отвечает: Значение не должно быть пустым.
   Ruslan_culeiman
 
17 - 02.02.18 - 14:03
(16) поле tarfget - Значение не должно быть пустым. вот так
   Ruslan_culeiman
 
18 - 02.02.18 - 14:04
(15) тьфу блин target
   drcrasher
 
19 - 02.02.18 - 14:14
(16) сорян, телепаты ушли бухать
   Ruslan_culeiman
 
20 - 02.02.18 - 14:25
(19) если про код, то он тот же в (0). Пятница уже у телепатов?)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует