PHP 上传文件代码示例 - 完整指南和最佳实践
以下是一个简单的 PHP 上传文件的代码示例,包含文件类型验证、大小限制和安全措施:
<?php
// 检查是否有文件上传
if(isset($_FILES['file'])){
$file = $_FILES['file'];
// 文件信息
$fileName = $file['name'];
$fileTmpName = $file['tmp_name'];
$fileSize = $file['size'];
$fileError = $file['error'];
// 获取文件扩展名
$fileExt = pathinfo($fileName, PATHINFO_EXTENSION);
// 允许上传的文件类型
$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
// 检查文件类型是否允许上传
if(in_array($fileExt, $allowedExtensions)){
// 检查是否有文件上传错误
if($fileError === 0){
// 检查文件大小是否超过限制
if($fileSize < 5000000){
// 为上传的文件生成一个唯一的文件名
$newFileName = uniqid('', true) . '.' . $fileExt;
// 上传文件的目标路径
$uploadPath = 'uploads/' . $newFileName;
// 将文件移动到目标路径
move_uploaded_file($fileTmpName, $uploadPath);
echo '文件上传成功!';
}else{
echo '文件大小超过限制!';
}
}else{
echo '文件上传错误!';
}
}else{
echo '不允许上传该类型的文件!';
}
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传文件">
</form>
最佳实践:
- 验证文件类型: 使用
in_array()函数检查文件扩展名是否在允许的列表中,以防止上传恶意文件。 - 限制文件大小: 使用
$fileSize变量检查文件大小是否超过限制,防止过大的文件占用过多服务器资源。 - 生成唯一文件名: 使用
uniqid()函数生成唯一的文件名,避免文件名冲突。 - 设置上传目录: 将上传的文件存储在指定的目录中,并确保该目录具有写入权限。
- 安全性: 上传文件时,应始终验证用户输入并采取适当的安全措施,以防止恶意攻击。
注意: 上述代码假设你的上传文件目录为 "uploads/",你需要在服务器上创建一个名为 "uploads" 的文件夹,并确保该文件夹具有适当的写入权限。
其他资源:
原文地址: https://www.cveoy.top/t/topic/d47Z 著作权归作者所有。请勿转载和采集!