Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, tenho o seguinte código:
<?php
set_time_limit(0);
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
// Uncomment the following line if you want to make the directory if it doesn't exist
// mkdir(str_replace('//','/',$targetPath), 0755, true);
$extensoes = array(".jpg", ".ai", ".pdf", ".cdr", ".psd",".zip",".rar",".indd",".ps",".gif",".tiff",".eps");
if (!in_array(strrchr($_FILES['Filedata']['name'], "."), $extensoes)) {
echo "";
}else{
move_uploaded_file($tempFile,$targetFile);
}
}
echo "1";
?>
Problema dele é que não está limitando as extensões como deveria. O que há de errado com ele?
Bom, acho que para mim não irá funcionar $_FILES['Filedata']['type'] pois não será upado apenas um formato de arquivo tal como aparece no seu exemplo (image\/(jpeg|png|gif|bmp). Existe outra forma de comparar pelo IF se a extensão do arquivo upada está na lista de valores da array $extensoes?
tente usando array_search()
Salve,
você tem que filtrar o type do arquivo:
$_FILES["tua_imagem"] ["type"];
exe com regExp:
if(!eregi("^image\/(jpeg|png|gif|bmp)$",$_FILES["up"]["type"],$ext)) die("Imagem inválida.");
Abraços.