引言
准备工作
1. PHP环境搭建
<?php
echo extension_loaded('gd');
?>
2. 服务器配置
确保服务器允许文件上传,修改php.ini文件中的以下设置:
file_uploads = Onupload_max_filesize = 2Mpost_max_size = 2Mmax_execution_time = 300
3. HTML表单
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="image">选择图片:</label>
<input type="file" name="image" id="image">
<input type="submit" value="上传">
</form>
代码实现
1. 上传处理文件
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) {
// 获取上传文件的信息
$file = $_FILES['image'];
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_type = $file['type'];
// 设置允许的图片类型
$allowed_types = array('image/jpeg', 'image/png', 'image/gif');
$file_ext = strtolower(end(explode('.', $file_name)));
if (in_array($file_ext, $allowed_types) && $file_error === 0) {
// 生成新文件名
$new_file_name = uniqid('', true) . '.' . $file_ext;
// 移动文件到指定目录
$upload_path = 'uploads/' . $new_file_name;
if (move_uploaded_file($file_tmp, $upload_path)) {
echo "文件上传成功: " . $upload_path;
} else {
echo "文件上传失败";
}
} else {
echo "不支持的文件类型或发生错误";
}
}
?>
2. 上传目录
<?php
if (!file_exists('uploads')) {
mkdir('uploads', 0755, true);
}
?>
注意事项
1. 安全性
- 永远不要信任客户端上传的文件,确保对文件进行验证。
- 设置合适的文件大小和类型。
- 使用
move_uploaded_file函数来移动上传的文件,确保文件是上传的而不是其他内容。
2. 性能
- 对上传的图片进行压缩,以减少文件大小和提高加载速度。
- 使用异步上传技术,提高用户体验。