Size: a a a

2020 April 16

🅵

🅵🅾️🆇 in 1C
Selvetarm
Только мультипарт в 1с как-то хитрО работает. Ему надо бинарник с заголовками сначала собрать, а только потом тело сообщения с разделителями. Я с фиддлером полтора часа сидел пока не понял
эм, не.
Все также
источник

🅵

🅵🅾️🆇 in 1C
Selvetarm
Только мультипарт в 1с как-то хитрО работает. Ему надо бинарник с заголовками сначала собрать, а только потом тело сообщения с разделителями. Я с фиддлером полтора часа сидел пока не понял
Вот пример мультипат запроса
https://gist.github.com/PlugFox/5f62e43c56941e4c5a244de2422ee7f8
источник

S

Selvetarm in 1C
не, там бинарник между строками
источник

S

Selvetarm in 1C
источник

🅵

🅵🅾️🆇 in 1C
Эм, у тебя както странно.
1) msgStream = New MemoryStream(); - явно нигде не используется
источник

🅵

🅵🅾️🆇 in 1C
Во вторых, зачем закрывать контроллер потока схороняя в двоичные данные, чтоб потом их снова добавить назад в контроллер потока
источник

S

Selvetarm in 1C
не, не. я поправил
источник

🅵

🅵🅾️🆇 in 1C
Тоесть ты мог бы все в один заход сделать

fileStream = New MemoryStream();
fsData = New DataWriter(fileStream);

fsData.WriteLine("--" + boundary);

// ТВОЙ ФАЙЛ +
fsData.WriteLine("Content-Disposition: form-data; name=""file""; filename=""" + fileName + """");
fsData.WriteLine("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
fsData.WriteLine("");
fsData.Write(binaryData);
// ТВОЙ ФАЙЛ -

fsData.WriteLine("");
fsData.WriteLine("--" + boundary + "--");
fsData.Close();

messageBody = fileStream.CloseAndGetBinaryData();
источник

🅵

🅵🅾️🆇 in 1C
Гдето так на вскидку
источник

S

Selvetarm in 1C
msgStream = New MemoryStream();
       msgData = New DataWriter(msgStream);
       msgData.WriteLine("--" + boundary);
       msgData.Write(fileBody);
       msgData.WriteLine("");
       msgData.WriteLine("--" + boundary + "--");
       msgData.Close();
       messageBody = msgStream.CloseAndGetBinaryData();
источник

🅵

🅵🅾️🆇 in 1C
Selvetarm
msgStream = New MemoryStream();
       msgData = New DataWriter(msgStream);
       msgData.WriteLine("--" + boundary);
       msgData.Write(fileBody);
       msgData.WriteLine("");
       msgData.WriteLine("--" + boundary + "--");
       msgData.Close();
       messageBody = msgStream.CloseAndGetBinaryData();
msgData.Write(fileBody);

Вот вместо этого сразу тело писать
источник

S

Selvetarm in 1C
не понимает так мультипарт
источник

🅵

🅵🅾️🆇 in 1C
Все понимает)
источник

S

Selvetarm in 1C
в этом и был косяк
источник

S

Selvetarm in 1C
нет
источник

🅵

🅵🅾️🆇 in 1C
Ну что именно ты изменил по твоему мнению?)
источник

S

Selvetarm in 1C
если разделители и заголовки мультипарта писать в одном потоке, то в сообщении заголовок не относится к бинарнику
источник

🅵

🅵🅾️🆇 in 1C
Да ну чего ты придумываешь)

Мультипат это всеголишь набор текста или байт
источник

S

Selvetarm in 1C
надо заголовки вместе с бинарником упаковывать, а потом эти пакеты перемежать разделителями
источник

🅵

🅵🅾️🆇 in 1C
С довольно простой структурой
источник