我在服务器上传时遇到文件类型检查问题。我的功能不能正常工作。在服务器上总是上传绝对一切。请帮帮我
<?php
session_start();
include_once 'dbconnect.php';
if (isset($_POST['ulozitzmeny'])) {
$valid_mime_types = array(
"image/gif",
"image/png",
"image/jpg",
"image/jpeg",
);
if (in_array($_FILES["file"]["type"], $valid_mime_types)) {
$file = rand(1000, 100000) . "-" . $_FILES['file']['name'];
$file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$folder = "images";
$new_size = $file_size / 1024;
$new_file_name = strtolower($file);
$final_file = str_replace(' ', '-', $new_file_name);
if (move_uploaded_file($file_loc, $folder . $final_file)) {
$sql = "UPDATE users SET file='$file', type='$file_type', size='$file_size' WHERE username = '$_SESSION[user]'";
mysql_query($sql);
}
}else{
echo 'error';
}
}
?>
答案 0 :(得分:0)
有一种更简单的方法来验证正在上传的文件类型。使用fileinfo
获取正在上传的文件的扩展名,然后与允许的文件扩展名进行比较。
以下是参考资料:
您的代码应该是这样的:
// your code
// valid file extensions
$valid_extensions = array("gif", "png", "jpg", "jpeg");
// get the file extension
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); // png
// now check against permissible extensions
if(in_array($ext, $valid_extensions)){
// allowed
}else{
// not allowed
}
// your code