Чтение переданного XML-файла непосредственно в PHP - PullRequest
3 голосов
/ 23 декабря 2011

Итак, такая форма:

<form action="/appapi/checkout/" method="post" mimetype="text/xml" enctype="text/xml" name="form1">
<input type="file" name="xmlfile">
<br />
<input type="submit" name="Submit" value="Submit">
</form>

Передаст мне XML-файл на appapi/checkout/

Как я могу прочитать этот файл?Или мне нужно сохранить его на моем сервере, прежде чем я смогу прочитать его?

Как это было сделано здесь: получить XML-файл по почте в php

Я пытался:

$url = 'php://input';

$xml = simplexml_load_file($url);

Но не получилось.Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Я не совсем уверен, что enctype="text/xml" в элементе <form> заставит браузер отправлять содержимое файла в виде необработанного ввода на сервер. Можно было бы проверить, если это возможно, но я не знаю.

Однако вы можете выполнить стандартную загрузку файлов с помощью PHP & shy; Документы и работать с временным файлом, который будет создан автоматически:

$xml = simplexml_load_file($_FILES['xmlfile']['tmp_name']);

Для этой формы необходимо иметь enctype="multipart/form-data". Также целесообразно сначала проверить, был ли файл успешно загружен, посмотрев в $_FILES['xmlfile']['error'], это 0, когда не произошло ошибки:

$upload = (object) $_FILES['xmlfile'];
$xml = $upload->error ? NULL : simplexml_load_file($upload->tmp_name);

Кстати, tempfile будет автоматически удален после завершения PHP-скрипта.

1 голос
/ 23 декабря 2011

Сначала исправьте HTML.

  1. <form> не имеет атрибута mimetype. Удалить его.
  2. Атрибут enctype не принимает text/xml в качестве значения , замените его на multipart/form-data
  3. Атрибут name не имеет смысла, если вам не нужен доступ к форме с помощью JavaScript, в этом случае вместо него используйте id.

Поскольку вы используете PHP, файл появится в $_FILES[], прочитайте его оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...