gpt4 book ai didi

php - 上传 XML 文件并解析它 - 没有临时文件

转载 作者:可可西里 更新时间:2023-11-01 00:22:18 24 4
gpt4 key购买 nike

对于 PHP 5,我想通过 Web 表单上传 XML 文件并使用 SimpleXML 解析它.

我尝试了几个 SimpleXML 示例,它们在我的 CentOS 6 Linux 服务器上运行良好。

但是,我还没有任何用 PHP 处理上传文件的经验。

我应该使用 $_FILES 吗?我总是必须使用临时文件还是可以完全在内存中完成?

我从 PHP Cookbook 复制了这个例子:

<html>
<body>

<?php if ($_SERVER['REQUEST_METHOD'] == 'GET') { ?>

<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME'] ?>"
enctype="multipart/form-data">
<input type="file" name="doc"/>
<input type="submit" value="Send File"/>
</form>

<?php } else {
if (isset($_FILES['doc']) &&
($_FILES['doc']['error'] == UPLOAD_ERR_OK)) {
$oldPath = $_FILES['doc']['tmp_name'];
$newPath = '/tmp/' . basename($_FILES['doc']['name']);

if (move_uploaded_file($oldPath, $newPath)) {
print "File moved from $oldPath to $newPath";
} else {
print "Couldn't move $oldPath to $newPath";
}
} else {
print "No valid file uploaded.";
}
}
?>

</body>
</html>

它工作正常,对于我添加的 print_r 语句,打印了以下输出:

Array
(
[document] => Array
(
[name] => my_file.xml
[type] => text/xml
[tmp_name] => /tmp/phpRD9cYI
[error] => 0
[size] => 1610252
)

)

我可以看到 /tmp/my_file.xml 文件。

我的问题是我是否可以跳过临时文件的创建?

我不喜欢他们因为:

  1. 有时是安全问题
  2. 它们必须被清理(通过 cronjob?)
  3. 他们的名字可能会冲突(可能很少发生,除非是 1)

更新:另外,我不明白,为什么我无法读取位于 $oldPath 的文件?在那里找不到它,我必须调用 move_uploaded_file() 然后读取 $newPath...

最佳答案

您不需要将文件保存/移动到新文件夹中,

if (isset($_FILES['doc']) && ($_FILES['doc']['error'] == UPLOAD_ERR_OK)) {
$xml = simplexml_load_file($_FILES['doc']['tmp_name']);
}

生成的临时文件将在 PHP 脚本完成时自动删除。希望这会有所帮助。

关于php - 上传 XML 文件并解析它 - 没有临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16399911/

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