更方便的文件上传:10个PHP文件上传函数
在Web开发中,文件上传是一项常见的任务。可以利用PHP编写函数来实现文件上传,这样可以使代码更模块化和可重用。以下是10个常用的PHP文件上传函数:
1. uploadFile()
这个函数用于上传单个文件。它接收三个参数:文件表单字段的名称、目标路径和允许的文件扩展名。该函数会检查文件类型和大小,并将文件移动到目标路径。
function uploadFile($field_name, $target_path, $allowed_extensions) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if (in_array($file_ext, $allowed_extensions)) {
if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
echo '文件上传成功!';
} else {
echo '文件上传失败!';
}
} else {
echo '不允许的文件扩展名!';
}
}
2. uploadMultipleFiles()
这个函数可以上传多个文件,它接收两个参数:目标路径和允许的文件扩展名。与uploadFile()函数类似,它会检查每个文件的类型和大小,并将它们移动到目标路径。
function uploadMultipleFiles($target_path, $allowed_extensions) {
foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
$file_name = $_FILES['files']['name'][$key];
$file_tmp = $tmp_name;
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if (in_array($file_ext, $allowed_extensions)) {
if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
echo $file_name.' 文件上传成功!<br>';
} else {
echo $file_name.' 文件上传失败!<br>';
}
} else {
echo $file_name.' 不允许的文件扩展名!<br>';
}
}
}
3. uploadFileWithRename()
这个函数与uploadFile()函数类似,但它会给上传的文件重命名,以避免文件名冲突。
function uploadFileWithRename($field_name, $target_path, $allowed_extensions) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$new_file_name = uniqid().'.'.$file_ext;
if (in_array($file_ext, $allowed_extensions)) {
if (move_uploaded_file($file_tmp, $target_path.'/'.$new_file_name)) {
echo '文件上传成功!';
} else {
echo '文件上传失败!';
}
} else {
echo '不允许的文件扩展名!';
}
}
4. uploadImage()
这个函数用于上传图片文件,并针对图片类型进行一些额外的检查,如宽度、高度和文件大小。
function uploadImage($field_name, $target_path, $allowed_extensions, $max_width = 500, $max_height = 500, $max_size = 1000000) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
list($width, $height) = getimagesize($file_tmp);
if (in_array($file_ext, $allowed_extensions)) {
if ($width <= $max_width && $height <= $max_height && $_FILES[$field_name]['size'] <= $max_size) {
if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
echo '图片上传成功!';
} else {
echo '图片上传失败!';
}
} else {
echo '图片尺寸或大小超过限制!';
}
} else {
echo '不允许的图片文件扩展名!';
}
}
5. uploadImageWithResize()
这个函数与uploadImage()函数类似,但它会自动调整图片大小以适应指定的宽度和高度。
function uploadImageWithResize($field_name, $target_path, $allowed_extensions, $max_width = 500, $max_height = 500, $max_size = 1000000) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
list($width, $height) = getimagesize($file_tmp);
if (in_array($file_ext, $allowed_extensions)) {
if ($width <= $max_width && $height <= $max_height && $_FILES[$field_name]['size'] <= $max_size) {
$image = resizeImage($file_tmp, $width, $height, $max_width, $max_height);
if (imagejpeg($image, $target_path.'/'.$file_name)) {
echo '调整大小后的图片上传成功!';
} else {
echo '调整大小后的图片上传失败!';
}
imagedestroy($image);
} else {
echo '图片尺寸或大小超过限制!';
}
} else {
echo '不允许的图片文件扩展名!';
}
}
function resizeImage($file_tmp, $width, $height, $max_width, $max_height) {
$image = imagecreatefromjpeg($file_tmp);
if ($width > $max_width || $height > $max_height) {
$new_width = $max_width;
$new_height = $max_height;
if ($width > $height) {
$new_height = ($max_width / $width) * $height;
} else {
$new_width = ($max_height / $height) * $width;
}
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
return $new_image;
}
return $image;
}
6. uploadVideo()
这个函数用于上传视频文件,并可以检查文件类型和大小。
function uploadVideo($field_name, $target_path, $allowed_extensions, $max_size = 100000000) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if (in_array($file_ext, $allowed_extensions)) {
if ($_FILES[$field_name]['size'] <= $max_size) {
if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
echo '视频上传成功!';
} else {
echo '视频上传失败!';
}
} else {
echo '视频文件大小超过限制!';
}
} else {
echo '不允许的视频文件扩展名!';
}
}
7. uploadAudio()
这个函数用于上传音频文件,并可以检查文件类型和大小。
function uploadAudio($field_name, $target_path, $allowed_extensions, $max_size = 5000000) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if (in_array($file_ext, $allowed_extensions)) {
if ($_FILES[$field_name]['size'] <= $max_size) {
if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
echo '音频上传成功!';
} else {
echo '音频上传失败!';
}
} else {
echo '音频文件大小超过限制!';
}
} else {
echo '不允许的音频文件扩展名!';
}
}
8. uploadExcel()
这个函数用于上传Excel文件,并可以检查文件类型和大小。
`php
function uploadExcel($field_name, $target_path, $allowed_extensions, $max_size = 5000000) {
$file_name = $_FILES[$field_name]['name'];
$file_tmp = $_FILES[$field_name]['tmp_name'];
$file_ext = strtolower(pathinfo
