9

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.

Luke Pring
  • 992
  • 3
  • 11
  • 16
  • 2
    No way this could be happening. fopen in `w` mode is "open file, truncate to zero length". If it was appending, you'd have to be opening in `a` mode – Marc B Jul 08 '14 at 19:18

4 Answers4

12

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.

Community
  • 1
  • 1
putvande
  • 15,068
  • 3
  • 34
  • 50
  • 1
    You must be doing something wrong. As the manual says: it truncates to 0 length. – putvande Jul 09 '14 at 11:59
  • i 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 – Luke Pring Jul 09 '14 at 14:21
7
file_put_contents($savePath,$fileContent);

Will overwrite the file or create if not already exist.

andrew
  • 9,313
  • 7
  • 30
  • 61
0

read this it will help show all the options for fopen

http://www.php.net/manual/en/function.fopen.php

user583576
  • 621
  • 6
  • 16
-1

Found the error, i forgot to reset a string inside of my application

Luke Pring
  • 992
  • 3
  • 11
  • 16