使用
PHP 5,我想通过Web表单上传XML文件,并使用
SimpleXML解析它.
我尝试了几个SimpleXML示例,它们在我的CentOS 6 Linux服务器上运行良好.
但是,我还没有任何处理PHP上传文件的经验.
我应该使用$_FILES吗?我是否总是要使用临时文件,还是可以完全在内存中完成?
从PHP Cookbook我复制了这个例子:
enctype="multipart/form-data">
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.";
}
}
?>
它工作正常,并为我添加的print_r语句打印以下输出:
Array
(
[document] => Array
(
[name] => my_file.xml
[type] => text/xml
[tmp_name] => /tmp/phpRD9cYI
[error] => 0
[size] => 1610252
)
)
我可以看到/tmp/my_file.xml文件.
我的问题是,如果我可以跳过临时文件的创建?
我不喜欢他们,因为:
>他们有时是安全问题
>他们必须清理(通过cronjob?)
>他们的名字可能会发生碰撞(可能很少发生,除非是1)
更新:另外,我不明白,为什么我不能在$oldPath读取文件?它在那里找不到,我必须调用move_uploaded_file()然后读取$newPath …