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

1С:Предприятие ::

Метки: 

PHP + 1C

Я
   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
   antihacker
 
2 - 26.01.18 - 20:24
Не совсем понятно. Я то отправляю из 1С ки , а не из формы.
   Остап Сулейманович
 
3 - 26.01.18 - 20:30
(2) Проверь на стороне пыха в твоем register3.php что приходит в $_FILES и что приходит в $_REQUEST. Где-то оно точно будет.
Должно быть в $_FILES.
   antihacker
 
4 - 26.01.18 - 20:37
А что если я не знаю имя файла ? Потому что имя файла имя -временного файлаю
   Остап Сулейманович
 
5 - 26.01.18 - 20:40
(4) А тебе и не нужно знать конкретное имя. Тебе нужно знать имя принятого. В $_FILES оно и будет. Если будет ))). Вот с каким пых его получит с таким и обрабатывай.
   antihacker
 
6 - 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
   antihacker
 
9 - 26.01.18 - 21:26
Вот так я буду читать
   antihacker
 
10 - 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;
}
>>
 
 Рекламное место пустует
   antihacker
 
11 - 26.01.18 - 21:27
Как мне заменить info.xml полученным файлом ?
   DrShad
 
12 - 26.01.18 - 23:31
сколько денег? даже не имея профильного, делается легко


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