简单的编程,只为学习PHP。
<?php
header("Content-Type:text/html; charset=utf-8");
error_reporting(0);
print<<<END
<html>
<head><title>文件上传实例</title></head>
<body>
<form action="3.php?path=/var/www/test/cx" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="上传" />
</form>
</body>
</html>
END;
$uppath=$_SERVER["SCRIPT_FILENAME"];
$uppath=dirname($uppath);
$uppath = isset($_GET['path'])?trim($_GET['path']):$uppath;
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
echo "fuck";
}
else
{
if(move_uploaded_file($_FILES["file"]["tmp_name"], $uppath.'/' . $_FILES["file"]["name"]))
{
echo "Uploaded: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "tmp_file: " . $_FILES["file"]["tmp_name"]."<br />";
echo "Stored in: " . $uppath.'/'.$_FILES["file"]["name"];
}
}
?>
move_uploaded_file() 对安全模式和 open_basedir 都是敏感的。不过,限制只针对 destination 路径。
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
$_FILES["file"]["error"]:
UPLOAD_ERR_OK
值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE
值:4; 没有文件被上传。
值:5; 上传文件大小为0.