【问题标题】:PHP: upload (POST) file to /dev/nullPHP:上传(POST)文件到/dev/null
【发布时间】:2023-01-12 12:01:54
【问题描述】:
使用 PHP,我想将文件直接发布到/dev/null, 无需写入磁盘。我有这个 upload.php,它基本上将文件从/tmp/yyXXXx到/tmp/repos目录,但我想直接把它放到/dev/null.
可以将 $_FILES['userfile']['tmp_name'] 设置或覆盖为/dev/null?
另外,我尝试设置上传文件路径到/dev/null在 php.ini 文件中。
?php
$uldir = '/tmp/repos/';
$ulfile = $uldir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $ulfile)) {
echo "Uploaded successfully.\n";
} else {
echo "Could not upload file!\n";
}
?>
【问题讨论】:
标签:
php
post
file-upload
upload
【解决方案1】:
详细解释,
- 很遗憾,无法直接将文件发布到/dev/null而不将其写入磁盘。这/dev/nullfile 是一个特殊的文件,它会丢弃所有写入其中的数据。但是,它不能作为目标移动上传文件()函数或任何其他类似函数,因为它不接受数据作为输入,所以它仅用于丢弃数据。
- 您可以改为在/tmp directory,将上传的文件移动到其中,完成后立即将其删除。
以下是如何执行此操作的示例:
$temp_file = tempnam('/tmp', 'drop');
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $temp_file)) {
echo "Uploaded successfully.
";
unlink($temp_file);
} else {
echo "Could not upload file!
";
}
- 通过使用临时名称()函数,您在 /tmp 目录中创建一个具有唯一名称的唯一文件。然后,取消链接()用于删除文件。
- 请务必记住,这只是一个如何丢弃文件的示例,您可能需要确保代码符合您的要求和安全措施。
- 另请注意,而不是移动上传文件函数你可以直接使用 unlink 函数来删除它,如果这是你的意图。