Overwrite file on server (PHP)

31,280

Solution 1

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.

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

Share:
31,280
Luke Pring
Author by

Luke Pring

Updated on July 09, 2022

Comments

  • Luke Pring
    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 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.

  • putvande
    putvande almost 10 years
    You must be doing something wrong. As the manual says: it truncates to 0 length.
  • Luke Pring
    Luke Pring almost 10 years
    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