2011-11-09 28 views
6

私は、ユーザーがPHP経由でディレクトリにファイルをアップロードできるようにするアプリケーションを作っています。PHPファイルのアップロードと同じ名前のファイルの上書き

同じ名前のファイルを上書きすることができないため、問題が発生しています。 私はtext.phpというファイルを持っています。アップロードすると、今度は戻ってtext.phpファイルの内容を変更して、サーバー上にアップロードします。まだ編集していないバージョンがあります。しかし、私は別のファイルをアップロードする場合、それは動作します。だから私はファイルを上書きすることはできません。私は、同じ名前のファイルをアップロードするとき、それは既存のファイルを上書きするように、私はこのコードを変更するにはどうすればよい

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

} 

+0

はあなたのコード規格に、それは上書きされますdoesntのもよろしいです(ファイルをアップロードする前にそれを置く)これを試してみてください把握することができますLAMPのようなサーバーでの動作は、ファイルが上書きされることです。あなたのCHMODが777 –

+0

であることを確認してください。 – Gunnit

+0

いいえ、FTPでファイルに行き、右クリックして最大(これは777です)に設定してください –

答えて

32

を必要とし、正しい値が

//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が動作しませんでしたが、私は許可を設定する方法を知らない777 – Gunnit

0

一時ファイルを永久保存場所に移動する前に、ファイルが存在するかどうかを確認して削除してみましたか?

+2

これはコメントでなければならない答え。 – Bojangles

+0

いいえ私は自分自身を考えたphp noobだから私はそれを行う方法がわからないが、私はそれを調べるつもりだ、アドバイスのおかげで – Gunnit

+0

これは答えとして投稿するべきではありません。 @Bojanglesに同意します。 –

1

スクリプトに上書きする権利がないのでしょうか? dirを777に変更して、再度テストしてみてください。それは、その後動作する場合、あなたは

+0

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

} 
関連する問題