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


PHP + 1C

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 человек.
Рекламное место пустует