2011-11-09 19 views
6

Tworzę aplikację, która umożliwia użytkownikom przesyłanie plików do katalogu za pośrednictwem PHP.PHP Przesyłanie i nadpisywanie pliku o tej samej nazwie

Mam problemy, ponieważ dawka nie pozwala mi nadpisywać plików o tej samej nazwie. Np. Mam plik o nazwie text.php i przesyłam go, teraz gdy wracam i zmieniam zawartość pliku text.php i ponownie go przesyłam na serwer, wciąż mam wersję bez zmian. Jednak jeśli prześlę inny plik, działa. Więc po prostu nie mogę zastąpić plików.

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"; 

} 

Jak mogę zmienić ten kod tak, że kiedy przesłać plik o tej samej nazwie nadpisuje istniejący plik?

+0

Czy na pewno robi się nadpisane, z kodem średnia zachowanie na serwerze LAMP-podobnym polega na tym, że plik zostanie nadpisany. TAK, upewnij się, że CHMOD jest 777 –

+0

czy to robię w php.ini – Gunnit

+0

Nie, po prostu przejdź do plików za pomocą FTP i kliknij prawym przyciskiem i ustaw filerights na maksimum (co jest 777) –

Odpowiedz

32

Spróbuj tego (umieścić go przed przesłać plik)

//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"); 
+0

sry ale dawka nie działa, i nie wiem jak skonfigurować zezwolenie 777 – Gunnit

0

Czy próbowałeś sprawdzić, czy plik istnieje i usuwa go, jeśli robi to przed przeniesieniem pliku tymczasowego do stałego miejsca przechowywania?

+2

To musi być komentarz, nie Odpowiedź. – Bojangles

+0

no iam samopoczucie php noob, więc nie jestem pewien, jak to zrobić, ale iam zajmie się nim, dzięki za poradę – Gunnit

+0

To nie powinno być wysłane jako odpowiedź. Zgadzam się z @Bojangles. –

1

Może skrypt nie ma uprawnień do nadpisywania? Spróbuj zmienić katalog na 777 i przetestuj ponownie. Jeśli działa wtedy, można dowiedzieć się prawidłową wartość trzeba

+0

robię to w pliku php.ini – Gunnit

2
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>"; 

} 
Powiązane problemy