Overwrite file on server (PHP)

Luke Pring picture Luke Pring · Jul 8, 2014 · Viewed 28.1k times · Source

I am making an Android application that need to be able to push files onto a server.

For this I'm using POST and fopen/fwrite but this method only appends to the file and using unlink 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.

Answer

putvande picture putvande · Jul 8, 2014

Use wa+ for opening and truncating:

$file = fopen($savePath,"wa+");

fopen

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.