Имя: Пароль:
1C
 
PHP + 1C
0 antihacker
 
26.01.18
20:07
Всем привет !

Вот так отправляю ХМЛ файл на сайт

имяФайлаОтправки = ПолучитьимяВременногоФайла("xml");

сообщить(имяФайлаОтправки);

ОбъектXML = Новый ЗаписьXML;
ОбъектXML.ОткрытьФайл(имяФайлаОтправки, "UTF-8");
ОбъектXML.ЗаписатьОбъявлениеXML();
ОбъектXML.ЗаписатьБезОбработки(
"<request>
|    <user_id>" + 111 + "</user_id>
|    <post_id>" + 222+ "</post_id>
|    <message>" + 333 + "</message>
|</request>");
ОбъектXML.Закрыть();

// отправим файл на сервер для обработки

имяВыходногоФайла = ПолучитьимяВременногоФайла("xml"); // наш сервер возвращает ответы в виде XML

ФайлОтправки = Новый Файл(имяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());

Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "text/html;charset=utf-8");
Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);

попытка
    Соединение = Новый HTTPСоединение("xxxxx.ru");
    
Соединение.ОтправитьДляОбработки(имяФайлаОтправки, "register3.php", имяВыходногоФайла, Заголовки);
    Исключение
    #Если Клиент Тогда
        Сообщить("Неудачная попытка отправки: " + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
        
        Если ЗначениеЗаполнено(Соединение) Тогда
            Сообщить(Символы.Таб + Соединение.КодСостояния, СтатусСообщения.Важное);
        КонецЕсли;
    #Иначе
        ЗаписьЖурналаРегистрации(ИмяОбъекта + ".ОтправитьНаСайт", УровеньЖурналаРегистрации.Ошибка, , , "Неудачная попытка запроса: " + ИнформацияОбОшибке().Описание);
    #КонецЕсли
        Соединение = Неопределено;
        //HTTPЗапрос = Неопределено;
        Возврат;
    КонецПопытки;

// удалим файл отправки - он больше не нужен
Попытка
    УдалитьФайлы(имяФайлаОтправки);
Исключение
КонецПопытки;

// обработаем ответ сервера

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(имяВыходногоФайла);

Пока ЧтениеXML.Прочитать() Цикл
    // чтение ответа в виде XML файла
КонецЦикла;

ЧтениеXML.Закрыть();

// удаляем файл после использования
Попытка
    УдалитьФайлы(имяВыходногоФайла);
Исключение
КонецПопытки;  


Подключение и отправка идет нормально. Но как теперь это прочесть ХМЛ файл  на стороне сайта ?
1 Остап Сулейманович
 
26.01.18
20:12
2 antihacker
 
26.01.18
20:24
Не совсем понятно. Я то отправляю из 1С ки , а не из формы.
3 Остап Сулейманович
 
26.01.18
20:30
(2) Проверь на стороне пыха в твоем register3.php что приходит в $_FILES и что приходит в $_REQUEST. Где-то оно точно будет.
Должно быть в $_FILES.
4 antihacker
 
26.01.18
20:37
А что если я не знаю имя файла ? Потому что имя файла имя -временного файлаю
5 Остап Сулейманович
 
26.01.18
20:40
(4) А тебе и не нужно знать конкретное имя. Тебе нужно знать имя принятого. В $_FILES оно и будет. Если будет ))). Вот с каким пых его получит с таким и обрабатывай.
6 antihacker
 
26.01.18
20:50
www = $_FILES['userfile']['name']


www = и есть имя переданного файла ?
7 Остап Сулейманович
 
26.01.18
21:20
(6) Не обязательно. Массив нужно обойти foreach-ем. Файлов может быть несколько, а может и не быть вообще.
Количество можно проверить count-ом. В общем - обычная обработка массива.
Плюс нужно использовать то, что каждый элемент $_FILES есть ассоциативным. И к элементам можно обращаться по имени. Ассоциации описаны здесь : http://php.net/manual/ru/features.file-upload.post-method.php
8 Остап Сулейманович
 
26.01.18
21:23
+ (7) foreach описан здесь : http://php.net/manual/ru/control-structures.foreach.php.

Короче изучите для начала рекомендуемые РТФМ. В интерпретации лурка : http://lurkmore.to/RTFM
9 antihacker
 
26.01.18
21:26
Вот так я буду читать
10 antihacker
 
26.01.18
21:26
<?php
header('Content-type: text/html; charset=utf-8');
$xml = simplexml_load_file('info.xml');
foreach ($xml->info as $info) {
echo $info[id];
echo $info->name;
echo $info->text;
}
>>
11 antihacker
 
26.01.18
21:27
Как мне заменить info.xml полученным файлом ?
12 DrShad
 
26.01.18
23:31
сколько денег? даже не имея профильного, делается легко