2012-12-27 4 views
0
<html> 
<body> 

<form action="upload.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file_field"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 

Le code php ci-dessous ne fonctionne pas. Il ne vérifie rien du tout. Il n'affiche pas l'erreur de taille de fichier maximale. Ce qu'il fait, c'est qu'il accepte tout fichier que j'essaye de télécharger et insère le nom du fichier dans la base de données. Il ne vérifie pas les restrictions que j'ai définies pour le téléchargement du fichier. une idée? TXSLe chargement du fichier ne fonctionne pas

<?php 

function uploadFile ($check_image = false, $random_name = false) { 

//Config Section  
//Set file upload path 
$path = 'c:/xampp/htdocs/images/'; //with trailing slash 
//Set max file size in bytes 
$max_size = 1000000; 
//Set default file extension whitelist 
$whitelist_ext = array('jpg','png','gif'); 
//Set default file type whitelist 
$whitelist_type = array('image/jpeg', 'image/png','image/gif'); 

//The Validation 
// Create an array to hold any output 
$out = array('error'=>null); 

if (!$_FILES['file_field']) { 
$out['error'][] = "Please specify a valid form field name";   
} 

if (!$path) { 
$out['error'][] = "Please specify a valid upload path";    
} 

if (count($out['error'])>0) { 
return $out; 
} 

//Make sure that there is a file 
if((!empty($_FILES['file_field'])) && ($_FILES['file_field']['error'] == 0)) { 

// Get filename 
$file_info = pathinfo($_FILES['file_field']['name']); 
$name = $file_info['filename']; 
$ext = $file_info['extension']; 

//Check file has the right extension   
if (!in_array($ext, $whitelist_ext)) { 
$out['error'][] = "Invalid file Extension"; 
} 

//Check that the file is of the right type 
if (!in_array($_FILES['file_field']["type"], $whitelist_type)) { 
$out['error'][] = "Invalid file Type"; 
} 

//Check that the file is not too big 
if ($_FILES['file_field']["size"] > $max_size) { 
$out['error'][] = "File is too big"; 
} 

//If $check image is set as true 
if ($check_image) { 
if (!getimagesize($_FILES['file_field']['tmp_name'])) { 
$out['error'][] = "Uploaded file is not a valid image"; 
} 
} 

//Create full filename including path 
if ($random_name) { 
// Generate random filename 
$tmp = str_replace(array('.',' '), array('',''), microtime()); 

if (!$tmp || $tmp == '') { 
$out['error'][] = "File must have a name"; 
}  
$newname = $tmp.'.'.$ext;         
} else { 
$newname = $name.'.'.$ext; 
} 

//Check if file already exists on server 
if (file_exists($path.$newname)) { 
$out['error'][] = "A file with this name already exists"; 
} 

if (count($out['error'])>0) { 
//The file has not correctly validated 
return $out; 
} 

if (move_uploaded_file($_FILES['file_field']['tmp_name'], $path.$newname)) { 
//Success 
$out['filepath'] = $path; 
$out['filename'] = $newname; 
return $out; 
} else { 
$out['error'][] = "Server Error!"; 
} 

} else { 
$out['error'][] = "No file uploaded"; 
return $out; 
}  
} 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("simple_login", $con); 

mysql_query("INSERT INTO photo (photo) 
VALUES ('{$_FILES['file_field']['tmp_name']}')"); 


mysql_close($con); 
?> 
+1

Il est le programmeur qui ne fonctionne pas, le téléchargement de fichiers fonctionne très bien;) – PhearOfRayne

+0

Sur une autre note: Vous devriez commencer par remplacer toutes vos fonctions 'mysql_ *'. À partir de PHP 5.5.0, ils sont obsolètes. Utilisez quelque chose comme [PDO] (http://php.net/manual/fr/book.pdo.php) ou [MySQLi] (http://php.net/manual/fr/book.mysqli.php) – PhearOfRayne

+0

@ StevenFarley Je viens de supprimer la partie MySQL du code pour vérifier si cela fonctionne sans cela mais rien n'a changé ... avez-vous vérifié que le téléchargement du fichier fonctionne? – Magna

Répondre

-1

L'erreur est ici:

//Make sure that there is a file 
if((!empty($_FILES['file_field'])) && ($_FILES['file_field']['error'] == 0)) { 

devrait être:

//Make sure that there is a file 
if((!empty($_FILES['file_field'])) && (count($_FILES['file_field']['error']) == 0)) { 
+0

J'ai changé comme vous l'avez souligné mais obtenir la même chose .. – Magna

Questions connexes