Overwrite file on server (PHP)
Solution 1
Use wa+
for opening and truncating:
$file = fopen($savePath,"wa+");
w+: Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
a+: Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
Solution 2
file_put_contents($savePath,$fileContent);
Will overwrite the file or create if not already exist.
Solution 3
read this it will help show all the options for fopen
http://www.php.net/manual/en/function.fopen.php
Luke Pring
Updated on July 09, 2022Comments
-
Luke Pring almost 2 years
I am making an Android application that need to be able to push files onto a server.
For this I'm using
POST
andfopen/fwrite
but this method only appends to the file and usingunlink
before writing to the file has no effect. (file_put_contents
has the exact same effect)This is what I have so far
<?php $fileContent = $_POST['filecontent']; $relativePath = "/DatabaseFiles/SavedToDoLists/".$_POST['filename']; $savePath = $_SERVER["DOCUMENT_ROOT"].$relativePath; unlink($savePath); $file = fopen($savePath,"w"); fwrite($file,$fileContent); fclose($file); ?>
The file will correctly delete its self when I don't try and write to it after but if I do try and write to it, it will appended.
Anyone got any suggestions on overwriting the file contents?
Thanks, Luke.
-
putvande almost 10 yearsYou must be doing something wrong. As the manual says: it truncates to 0 length.
-
Luke Pring almost 10 yearsi was using string = string + newString and forgetting to call string = "" before clicking save a second time so it was just adding the new ones on each time