web-dev-qa-db-fra.com

PHP Téléchargement de fichier et remplacement de fichier portant le même nom

Je crée une application qui permet aux utilisateurs de télécharger un fichier dans un répertoire via PHP.

J'ai des problèmes parce que cela ne me permet pas d'écraser des fichiers portant le même nom. Par exemple, j'ai un fichier appelé text.php que je télécharge maintenant lorsque je change le contenu du fichier texte. php et je le télécharge à nouveau sur le serveur, il me reste la version sans les modifications. Cependant, si je télécharge un autre fichier, cela fonctionne. Donc, je ne peux tout simplement pas écraser des fichiers. 

if ($_POST["greg"]=='true'){
// Set local PHP vars from the POST vars sent from our form using the array
// of data that the $_FILES global variable contains for this uploaded file
$fileName = $_FILES["file1"]["name"]; // The file name
$fileTmpLoc = $_FILES["file1"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["file1"]["type"]; // The type of file it is
$fileSize = $_FILES["file1"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["file1"]["error"]; // 0 for false... and 1 for true

// Specific Error Handling if you need to run error checking
if (!$fileTmpLoc) { // if file not chosen
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
} else if($fileSize > 90000000000000) { // if file is larger than we want to allow
    echo "ERROR: Your file was larger than 50kb in file size.";
    unlink($fileTmpLoc);
    exit();
} else if (!preg_match("/.(doc|docx|xls)$/i", $fileName) ) {
     // This condition is only if you wish to allow uploading of specific file types    
     echo "ERROR: Your file is not the right format contact the master of the page for clarification.";
     unlink($fileTmpLoc);
     exit();
}
// Place it into your "uploads" folder mow using the move_uploaded_file() function
move_uploaded_file($fileTmpLoc, "documenti/$fileName");
// Check to make sure the uploaded file is in place where you want it
if (!file_exists("documenti/$fileName")) {
    echo "ERROR: File not uploaded<br /><br />";
    echo "Check folder permissions on the target uploads folder is 0755 or looser.<br /><br />";
    echo "Check that your php.ini settings are set to allow over 2 MB files, they are 2MB by default.";
    exit();
}
// Display things to the page so you can see what is happening for testing purposes
echo "The file named <strong>$fileName</strong> uploaded successfuly.<br /><br />";
echo "It is <strong>$fileSize</strong> bytes in size.<br /><br />";
echo "It is a <strong>$fileType</strong> type of file.<br /><br />";
echo "The Error Message output for this upload is: <br />$fileErrorMsg";

}

Comment puis-je modifier ce code afin que, lorsque je télécharge un fichier portant le même nom, il écrase le fichier existant?

7
Gunnit

Essayez ceci (mettez-le avant de télécharger un fichier)

//checking if file exsists
if(file_exists("documenti/$fileName")) unlink("documenti/$fileName");

//Place it into your "uploads" folder mow using the move_uploaded_file() function
move_uploaded_file($fileTmpLoc, "documenti/$fileName");
33
Dezigo
if (file_exists("documenti/$fileName"))
 { 
 unlink("documenti/$fileName");

 echo "<font face='Verdana' size='2' >Last Uploaded File has been removed from uploads folder<br>back to uploadform agian and upload your file<br>";// now your file which uploaded before was deleted from uploads folder you can open it and check if it removed or not , so no you should go back to uploadform again and import your file which will uploaded correctly 

echo "<font face='Verdana' size='2' ><BR><BR><BR><a href='upform.php'>Back to upform</a><BR>";

 } 
2
user1562744

Peut-être que le script n'a pas le droit d'écraser? Essayez de changer le répertoire en 777 et testez à nouveau. Si cela fonctionne alors, vous pouvez déterminer la valeur correcte dont vous avez besoin

1
Flo

Avez-vous essayé de vérifier si le fichier existe et de le supprimer le cas échéant avant de déplacer le fichier temporaire vers l'emplacement de stockage permanent?

0
Shane McIntosh