gpt4 book ai didi

php - 在 php 中通过 post 接收 xml 文件

转载 作者:数据小太阳 更新时间:2023-10-29 01:40:39 30 4
gpt4 key购买 nike

我正在寻找可以通过 POST 接受 XML 文件然后发送响应的 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 的帖子,然后将文件保存到我的服务器并向他们发送回复,表示已确认或已接受。

最佳答案

你的方法很好,看起来是正确的做法,有一些注意事项:

  • 如果你有PHP5,你可以使用file_put_contents作为file_get_contents的逆操作,避免整个fopen/fwrite/fclose。然而:
  • 如果您要接受的 XML POST 正文可能很大,那么您现在的代码可能会遇到麻烦。它首先将整个主体加载到内存中,然后将其作为一大块写出。这对于小帖子来说很好,但如果文件大小趋向于兆字节,最好完全使用 fopen/fread/fwrite/fclose,这样你的内存使用量永远不会超过例如 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);
  • 当文件发布频率超过每秒 1 个时(例如,当文件从多个来源发布时),您的文件名生成方法可能会遇到名称冲突。但我怀疑这只是示例代码,您已经意识到这一点。

关于php - 在 php 中通过 post 接收 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/938811/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com