получать xml-файл через сообщение в php

Я ищу PHP-скрипт, который может принимать XML-файл через POST, а затем отправить ответ ….

У кого-нибудь есть код, который мог бы это сделать?

Пока что единственный код, который у меня есть, это, но не уверен в ответе, или, действительно, я даже иду в правильном направлении, так как символы XML не сохраняются правильно. Есть идеи?

<?php if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){ $postText = file_get_contents('php://input'); } $datetime=date('ymdHis'); $xmlfile = "myfile" . $datetime . ".xml"; $FileHandle = fopen($xmlfile, 'w') or die("can't open file"); fwrite($FileHandle, $postText); fclose($FileHandle); ?> 

Мои файлы пустые … содержимое не записывается в них. Они создаются.

 //source html <form action="quicktest.php" method="post" mimetype="text/xml" enctype="text/xml" name="form1"> <input type="file" name="xmlfile"> <br> <input type="submit" name="Submit" value="Submit"> </form> //destination php $file = $_POST['FILES']['xmlfile']; $fileContents= file_get_contents($file['tmp_name']); $datetime=date('ymdHis'); $xmlfile="myfile" . $datetime . ".xml"; $FileHandle=fopen($xmlfile, 'w') or die("can't open file"); fwrite($FileHandle, $postText); fclose($FileHandle); 

Я не говорю о загрузке файла. Кто-то хочет регулярно отправлять XML-файл через HTTP-соединение.

Мне просто нужен сценарий, запущенный на моем сервере, чтобы принять их сообщение в мой URL-адрес, а затем сохранить файл на моем сервере и отправить им ответный ответ, признанный или принятый.

Ваш метод в порядке, и по его мнению, правильный способ сделать это, с некоторыми примечаниями:

  • Если у вас есть PHP5, вы можете использовать file_put_contents как обратную операцию file_get_contents и избегать всего fopen/fwrite/fclose . Однако:
  • Если тела XML POST, которые вы принимаете, могут быть большими, ваш код прямо сейчас может столкнуться с проблемами. Сначала он загружает все тело в память, а затем записывает его как один большой кусок. Это нормально для небольших сообщений, но если файлы имеют тенденцию к мегабайтам, лучше всего сделать это с помощью fopen/fread/fwrite/fclose , поэтому использование вашей памяти никогда не будет превышать, например, 8 КБ:

     $inp = fopen("php://input"); $outp = fopen("xmlfile" . date("YmdHis") . ".xml", "w"); while (!feof($inp)) { $buffer = fread($inp, 8192); fwrite($outp, $buffer); } fclose($inp); fclose($outp); 
  • Метод генерации имени файла может выполняться при сортировке имен, когда файлы отправляются чаще, чем 1 в секунду (например, когда они отправляются из нескольких источников). Но я подозреваю, что это всего лишь пример кода, и вы уже знаете об этом.

Ваш метод работает, но излишне усложнен. См. Руководство по PHP для лучшего способа: http://uk.php.net/manual/en/features.file-upload.post-method.php

Вы говорите о загрузке XML-файла с помощью php? Проверьте эту ссылку из w3schools . Ссылка говорит о загрузке файла. Вы можете настроить загрузку только файлов XML.