Имя: Пароль:
1C
 
Отправка zip файла post запросом из 1С на сайт при помощи COMОбъект("MSXML2.XMLHTTP")
,
0 dimm7310
 
07.02.19
11:12
В данный момент для разных версий 1С (7.7 - 8.Х) написаны обработки выгрузки данных на сайт. Данные выгружаются в формате Json.
По всех версиях отправка производится:

    XMLHttp = Новый COMОбъект("MSXML2.XMLHTTP");
    XMLHttp.Open("POST",АдресURL+ТипЗапроса+ПараметрыЗапроса,"false");
    
    XMLHttp.SetRequestHeader("Content-Type", "application/json");
    
    XMLHttp.Send(ТекстЗапроса); //  json



Встала задача отправлять zip файлы.

Есть примеры отправки файлов этим же способом?
1 trad
 
07.02.19
12:20
Адрес = "http://ptsv2.com";;
Файл = "C:\1.zip";

Stream = СоздатьОбъект("ADODB.Stream");
Stream.open();
Stream.loadFromFile(Файл);

Http = СоздатьОбъект("Msxml2.ServerXMLHTTP");
Http.open("POST", Адрес, 0);
Http.setRequestHeader("Content-Type", "application/zip");
Http.send(Stream);
    
Сообщить(Http.status);
2 trad
 
07.02.19
12:35
вместо Msxml2.ServerXMLHTTP можно тот же Msxml2.XMLHTTP - без разницы
3 dimm7310
 
07.02.19
12:42
спасибо попробую
4 dimm7310
 
07.02.19
14:18
(1) Админ говорит, что ничего не получил, это точно рабочий код?
5 trad
 
07.02.19
14:52
Http.status ?
6 trad
 
07.02.19
15:15
(4) и ты уверен, что админ хочет получить файл по http, а не по ftp?
7 dimm7310
 
07.02.19
15:23
(5) 200

(6) уверен (речь шла о доработке Post запроса)
8 Сияющий в темноте
 
07.02.19
15:25
Чтобы получили файл,нужно посылать данные формы,а в них уже файл,то есть добавить немного в заголовке и хвосте файла,а также не забыть,что у файла есть имя.

код,приведенный выше фигачит файл в данные post запроса,и его даже можно получить в переменной RawPostData.
9 trad
 
07.02.19
15:42
такой код на сервере:

<?php
  print_r(stream_get_contents(fopen('php://input', 'r')));
?>

- показывает что код рабочий и в теле http-запроса есть те данные что отправлены клиентом
10 trad
 
07.02.19
15:47
Любой http запрос это всего лишь некоторые заголовки и тело.

Кодом в (1) показано, как любой двоичный файл послать в тело запроса.
А какими его снабдить при этом заголовками, это исключительно договоренность принимающей и отправляющей сторон.
11 Сияющий в темноте
 
07.02.19
23:28
Есть существенная разница-получить файл или получить содержимое файла.
12 France
 
08.02.19
02:03
(11) а не проще вообще этим не заморачиваться?
13 trad
 
08.02.19
08:04
(11) конечно есть
Но, мне например, не очевидно, что на самом деле требуется по задаче