2009-06-02 14 views
13

Busco un script PHP que puede aceptar un archivo XML a través de un poste, a continuación, enviar una respuesta ....recibir archivo XML a través de su mensaje en php

cualquier persona tiene código que podría hacer esto?

Hasta ahora, el único código que tengo es el siguiente, pero no estoy seguro de la respuesta o si incluso estoy yendo en la dirección correcta ya que los caracteres XML no se guardan correctamente. ¿Algunas ideas?

<?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); 

?> 

Mis archivos están todos vacíos ... el contenido no se está escribiendo a ellos. Ellos están siendo creados.

//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); 

No estoy hablando de la posibilidad de subir un archivo. Alguien quiere enviar un archivo XML de manera regular a través de una conexión HTTP.

Solo necesito un script que se ejecute en mi servidor para aceptar su publicación en mi URL y luego guardar el archivo en mi servidor y enviarles una respuesta diciendo "confirmado o aceptado".

+0

Su "respuesta" es cualquier cosa que pueda "repetir" o generar durante la ejecución de su secuencia de comandos. –

Respuesta

-1

¿Está hablando de cargar un archivo XML usando php? A CONTINUACIÓN, consulte este enlace en w3schools. El enlace habla sobre la carga de archivos. Puede personalizar para cargar solo archivos XML.

6

Su método está muy bien, y por el aspecto de la misma, la forma correcta de hacerlo, con algunas notas:

  • Si tiene PHP5, puede utilizar file_put_contents como la operación inversa de file_get_contents, y evitar el total fopen/fwrite/fclose. Sin embargo:
  • Si los cuerpos XML POST que aceptará pueden ser grandes, su código ahora mismo puede tener problemas. Primero carga todo el cuerpo en la memoria, luego lo escribe como un gran trozo. Eso está muy bien para los pequeños puestos, pero si los filesizes tienden en megabytes sería mejor hacerlo a la misma en su totalidad con fopen/fread/fwrite/fclose, por lo que su uso de la memoria nunca excederá, por ejemplo, de 8 KB:

    $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); 
    
  • Su método de generación de nombre de archivo puede ejecutar en nombrar colisiones cuando los archivos se publican con más regularidad que 1 por segundo (por ejemplo, cuando se publican desde múltiples fuentes). Pero sospecho que esto es solo un código de ejemplo y ya lo sabes.

Cuestiones relacionadas