【问题标题】:Get full content of uploaded XML file in PHP在 PHP 中获取上传的 XML 文件的全部内容
【发布时间】:2018-08-30 09:46:36
【问题描述】:

我正在构建一个文件上传表单,用户可以在其中提交 XML 配置文件。我的目标是获取全部内容并将它们作为新帖子(自定义帖子类型)插入 Wordpress。它大部分都在工作,除了我在使用file_get_contents() 时很难将 XML 标记与内容一起提取。这在使用时会省略 XML 标记吗?如果是这样,我怎样才能得到文件的全部内容?

这是我的表单和处理程序代码...

function slicer_profile_form()
{
    echo '<form action="' . esc_url( $_SERVER['REQUEST_URI'] ) . '" method="post" enctype="multipart/form-data">';

    echo '<p>';
    echo 'Profile<br />';
    echo '<input type="file" name="slicer-profile" accept="text/xml">';
    echo '</p>';

    echo '<p><input type="submit" name="slicer-profile-submitted" value="Submit"/></p>';
    echo '</form>';
}

function slicer_profile_submit()
{
    // if the submit button is clicked, submit
    if (isset($_POST['slicer-profile-submitted']))
    {
        $contents = file_get_contents( $_FILES['slicer-profile']['tmp_name'] );
        var_dump($contents);
    }
}

【问题讨论】:

  • 在下面查看我的答案。
  • 内容没有被省略,因为您只是将其输出到浏览器,浏览器试图将标签理解为 HTML。如果您查看页面的源代码 - 您可能会在其中看到 XML 标记。
  • 很高兴知道,非常感谢!

标签: php wordpress forms file-upload file-get-contents


【解决方案1】:

你可以用这个。

 <?php
$xml=simplexml_load_file($_FILES['slicer-profile']['tmp_name']) or die("Error: Cannot create object");
print_r($xml);
?> 

它将给出xml内容。

【讨论】:

  • 如果有帮助,请将答案标记为已批准。 :) @AidanKnight
  • 我只需要等待 11 分钟才能接受它作为答案 :)
  • 谢谢兄弟@AidanKnight :)
【解决方案2】:

您的脚本可能不安全,您可能需要使用以下 php 命令完成正确的文件上传过程:is_uploaded_file 和 move_uploaded_file

我总是检查列入黑名单的文件类型以及我收到的文件类型。您还需要确保收到的内容也是安全的。

改为:

echo '<pre>';
var_dump($contents);
echo '</pre>';

您当前的脚本可能会正确输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2012-01-29
    相关资源
    最近更新 更多