2009-06-02 2 views
13

포스트를 통해 XML 파일을 수신 한 후 응답을 보낼 .... 가 나는 POST를 통해 XML 파일을 수용 할 수있는 PHP 스크립트를 찾고 있어요 PHP

사람이 할 수있는 코드를 가지고 있습니까?

지금까지 내가 가진 유일한 코드는 응답이나 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); 

나는 파일을 업로드에 대해 이야기하고 있지 않다. 누군가는 HTTP 연결을 통해 XML 파일을 정기적으로 보내려고합니다.

내 서버에서 실행중인 스크립트 만 있으면 내 URL에 대한 게시물을 수락 한 다음 파일을 내 서버에 저장하고 승인 또는 승인이라는 응답을 다시 보내면됩니다.

+0

"응답"은 스크립트 실행 중에 "에코"되거나 출력되는 내용입니다. –

답변

1

귀하의 방법은 효과가 있지만 불필요하게 복잡합니다. 더 좋은 방법은 PHP 매뉴얼을 참조하십시오.

-1

PHP를 사용하여 XML 파일을 업로드하는 것에 대해 이야기하고 있습니까? 이 링크를 w3schools에서 확인하십시오. 링크는 파일 업로드에 대해 이야기합니다. XML 파일 만 업로드하도록 사용자 정의 할 수 있습니다.

6

귀하의 방법은 괜찮습니다, 그리고 그것의 모양에 의해, 적절한 방법은 몇 가지 메모와 함께, 그것을 할 : 당신은 PHP5이있는 경우, file_get_contents의 역 동작으로 file_put_contents을 사용할 수 있습니다

  • 및 전체 fopen/fwrite/fclose을 피하십시오. 그러나 :
  • 수용 할 XML POST 본문이 클 경우 코드가 문제가 될 수 있습니다. 먼저 전체 바디를 메모리에로드 한 다음 하나의 큰 덩어리로 씁니다. 즉 작은 게시물에 대한 미세하지만 filesizes이 메가 바이트에 경향이 있다면 더 좋을 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보다 규칙적으로 게시 될 때 (예 : 여러 소스에서 올릴 때) 이름을 콜리 전합니다. 하지만이 코드는 단지 예제 코드 일 뿐이며 이미 알고 있습니다.