2009-06-02 13 views
13

szukam skryptu PHP, które można zaakceptować plik XML za pośrednictwem POST, a następnie wysłać odpowiedź ....otrzymać plik xml za pośrednictwem poczty w php

Czy ktoś ma żadnego kodu, który mógłby to zrobić?

Do tej pory jedyny kod jaki mam to jest, ale nie jestem pewien co do odpowiedzi lub jeśli rzeczywiście idę w dobrym kierunku, ponieważ znaki XML nie są zapisywane poprawnie. Jakieś pomysły?

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

?> 

Moje pliki są puste ... treść nie jest do nich zapisywana. Są tworzone.

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

Nie mówię o przesyłaniu plików. Ktoś chce regularnie wysyłać plik XML za pośrednictwem połączenia HTTP.

Potrzebuję tylko skryptu uruchomionego na moim serwerze, aby zaakceptować jego wpis na mój adres URL, a następnie zapisać plik na moim serwerze i wysłać mu odpowiedź z potwierdzeniem lub zaakceptowaniem.

+0

Twoja "odpowiedź" to cokolwiek, co "wyemitujesz" lub wypiszesz podczas wykonywania skryptu. –

Odpowiedz

-1

Czy mówisz o przesyłaniu pliku XML za pomocą php? NALEŻY sprawdzić ten link od w3schools. Link mówi o przesłaniu pliku. Możesz dostosować, aby przesyłać tylko pliki XML.

6

Twoja metoda jest w porządku, i wygląda na to, właściwy sposób, aby to zrobić, a niektóre notatki:

  • Jeśli masz PHP5, można użyć file_put_contents jako działania odwrotnego file_get_contents i unikaj całego fopen/fwrite/fclose. Jednak:
  • Jeśli ciała XML POST, które akceptujesz, mogą być duże, Twój kod może teraz sprawiać kłopoty. Najpierw ładuje całe ciało do pamięci, a następnie zapisuje je jako jedną dużą porcję. To jest dobre dla małych stanowisk, ale jeśli filesizes tendencję do megabajtów byłoby lepiej zrobić z nim całkowicie z fopen/fread/fwrite/fclose, dzięki czemu zużycie pamięci nigdy nie przekroczy np 8KB:

    $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); 
    
  • Twoja metoda generacji nazwa pliku może napotkasz nazwać kolizje, gdy pliki są publikowane częściej niż 1 na sekundę (na przykład, gdy są publikowane z wielu źródeł). Ale podejrzewam, że to tylko przykładowy kod i już jesteś tego świadomy.