在PHP中使用无处不在的文件上传范例时,例如:
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
文件本身是否已加载到内存中,或者是用作文件引用的$ _FILES全局文件?
如果文件没有加载到内存中,那么PHP文档中关于文件上传陷阱的这一行的目的是什么:
如果启用了内存限制,则可能需要更大的memory_limit。确保将memory_limit设置得足够大。
http://www.php.net/manual/en/features.file-upload.common-pitfalls.php
答案 0 :(得分:1)
不,它没有加载到内存中 - 这将是一个真正的悲观。您可以通过阅读$_FILES["file"]["tmp_name"]
。
答案 1 :(得分:1)
不,文件上传本身由Web服务器处理。当然,Web服务器需要为上传保留一些内存,但它只能与读/写缓冲区大小一样多。猜有点像4096字节。
上传文件后,网络服务器将上传文件的临时名称和其他一些信息填充到php和php,使这些信息在$_FILES
中可用,但它不会有上传的文件在内存中。