2009-06-02 24 views
13

Tôi đang tìm tập lệnh PHP có thể chấp nhận tệp XML qua POST, sau đó gửi câu trả lời ....nhận tệp xml qua bài đăng trong php

Có ai có mã nào có thể thực hiện việc này không?

Cho đến nay mã duy nhất tôi có là điều này nhưng không chắc chắn về phản hồi hoặc nếu thực sự tôi thậm chí đi đúng hướng khi các ký tự XML không được lưu chính xác. Bất kỳ ý tưởng?

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

?> 

Tệp của tôi trống ... nội dung không được ghi vào chúng. Chúng đang được tạo ra.

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

Tôi không nói về cách tải lên một tập tin. Một người nào đó muốn gửi một tệp XML một cách thường xuyên thông qua kết nối HTTP.

Tôi chỉ cần một tập lệnh chạy trên máy chủ của mình để chấp nhận bài đăng của họ vào URL của tôi và sau đó lưu tệp vào máy chủ của tôi và gửi phản hồi lại cho họ biết được chấp nhận hoặc chấp nhận.

+0

"Phản hồi" của bạn là bất kỳ thứ gì bạn sẽ "echo" hoặc xuất trong khi thực thi tập lệnh. –

Trả lời

-1

Bạn đang nói về việc tải lên tệp XML bằng cách sử dụng php? Hãy kiểm tra liên kết này từ w3schools. Liên kết nói về tải lên tệp. Bạn có thể tùy chỉnh để chỉ tải lên các tệp XML.

6

phương pháp của bạn là tốt, và bởi vẻ của nó, cách thích hợp để làm điều đó, với một số ghi chú:

  • Nếu bạn có PHP5, bạn có thể sử dụng file_put_contents như các hoạt động nghịch đảo của file_get_contents, và tránh toàn bộ fopen/fwrite/fclose. Tuy nhiên:
  • Nếu cơ quan POST XML bạn chấp nhận có thể lớn, mã của bạn ngay bây giờ có thể gặp sự cố. Nó lần đầu tiên tải toàn bộ cơ thể vào bộ nhớ, sau đó viết nó ra như một phần lớn. Đó là tốt cho bài viết nhỏ nhưng nếu kích thước file có xu hướng vào MB sẽ tốt hơn làm cho nó hoàn toàn với fopen/fread/fwrite/fclose, vì vậy sử dụng bộ nhớ của bạn sẽ không bao giờ vượt quá ví dụ 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); 
    
  • phương pháp thế hệ tên tập tin của bạn có thể chạy vào tên collissions khi các tập tin được đăng thường xuyên hơn 1 mỗi giây (ví dụ khi chúng được đăng từ nhiều nguồn). Nhưng tôi nghi ngờ đây chỉ là mã ví dụ và bạn đã biết điều đó.

Các vấn đề liên quan