我有一个PHP脚本来处理上传的图像。
如果我上传像file.jpg这样的文件,它可以正常工作。
但是如果我尝试上传file.JPG,我就遇到了麻烦。即使它重命名了同一个文件。
代码:
if(isset($_FILES["arq"])){
@getimagesize($_FILES['arq']['tmp_name']) or $err=5;
($_FILES['arq']['error']==0) or $err=$_FILES['arq']['error'];
if ($err==0){
$dir = "./img/".$_SESSION['estudante']."/";
if (!is_dir($dir)){mkdir($dir);}
$filename = substr(md5(uniqid(rand(), true)),0,20) . ".";
$filename .= pathinfo($_FILES["arq"]["name"], PATHINFO_EXTENSION);
$fotourl = $dir . basename($filename);//$_FILES["arq"]["name"]);
move_uploaded_file($_FILES["arq"]["tmp_name"], $fotourl);
//resize e cira thumbnails
resizeimg($fotourl, 320,204); //editfoto
resizeimg($fotourl, 137,87); //album
resizeimg($fotourl, 200,0); //home
resizeimg($fotourl, 148,0); //perfil
resizeimg($fotourl, 60,60); //thumbnail
resizeimg($fotourl, 100,0); //iframe perfil
resizeimg($fotourl, 530, 530); //slide
resizeimg($fotourl, 330, 0); //i slide
//registra no BD
$sql="INSERT INTO fotos (estudante, url) VALUES ('".$_SESSION['estudante']."', '$fotourl')";
mysql_query($sql);
//retorna o id da foto
$fotoid=mysql_insert_id();
//notifica adms somente
$sql="select estudante from administradores";
$adms=mysql_query($sql);
while ($ar=mysql_fetch_assoc($adms)){
$msg="O usuário <a href=\"perfil.php?id=$_SESSION[estudante]\">".nomeapelido($_SESSION['estudante'])."</a> inseriu uma nova <a href='fotoslide.php?fotoid=$fotoid'>imagem</a>.";
$sql="insert into mensagens (msgde, msgpara, msgmsg) values (5, $ar[estudante], '$msg')"; // 5=cadastro do 'user' sistema
mysql_query($sql);
//echo "$sql\n";
}
mysql_free_result($adms);
}
}
答案 0 :(得分:1)
移动文件时,您应该能够将扩展名重命名为小写。如果保留初始文件扩展的实际情况非常重要,那么在应用strtolower之前将其存储在变量中是很容易的,将其传递给imgresize函数,并在调整大小的img时将其用于扩展。保存。
$filename .= strtolower(pathinfo($_FILES["arq"]["name"], PATHINFO_EXTENSION));
$fotourl = $dir . basename($filename);//$_FILES["arq"]["name"]);
move_uploaded_file($_FILES["arq"]["tmp_name"], $fotourl);