引言
图片上传基础
1. 文件上传表单
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">选择图片文件:</label>
<input type="file" name="file" id="file" required>
<input type="submit" value="上传">
</form>
2. PHP上传处理
在服务器端,使用PHP处理上传的文件。以下是一个简单的上传处理脚本:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$file = $_FILES['file'];
$filename = $file['name'];
$filetmp = $file['tmp_name'];
$filetype = $file['type'];
$fileext = strtolower(end(explode('.', $filename)));
// 允许的文件类型
$allowed = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($fileext, $allowed)) {
// 设置上传目录
$upload_dir = 'uploads/';
$newfilename = uniqid('', true) . '.' . $fileext;
if (move_uploaded_file($filetmp, $upload_dir . $newfilename)) {
echo "文件上传成功!";
} else {
echo "文件上传失败!";
}
} else {
echo "不支持的文件类型!";
}
}
?>
文件命名技巧
1. 使用uniqid
在上述示例中,我们使用了uniqid()函数来生成一个唯一的文件名。uniqid()函数可以生成一个基于当前时间戳的唯一ID,格式如下:
$newfilename = uniqid('', true) . '.' . $fileext;
这将确保每个上传的文件都有一个唯一的名称,从而避免文件名冲突。
2. 使用MD5或SHA1
如果您想要生成一个更长的唯一字符串,可以使用MD5或SHA1函数。以下是一个使用MD5的示例:
$newfilename = md5(uniqid('', true)) . '.' . $fileext;
3. 结合使用多种方法
在实际应用中,您可以将多种方法结合起来,以确保文件名的唯一性。例如:
$newfilename = md5(uniqid(time(), true)) . '-' . $fileext;
这将结合当前时间戳和一个唯一的ID,生成一个更复杂的文件名。