Имя: Пароль:
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) конечно есть
Но, мне например, не очевидно, что на самом деле требуется по задаче
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший