【问题标题】:Overwrite file on server (PHP)覆盖服务器上的文件 (PHP)
【发布时间】:2014-08-29 15:46:24
【问题描述】:

我正在制作一个需要能够将文件推送到服务器的 Android 应用程序。

为此,我使用POSTfopen/fwrite,但此方法仅附加到文件中,并且在写入文件之前使用unlink 无效。 (file_put_contents 效果完全一样)

这是我目前所拥有的

<?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);

?>

当我之后不尝试写入文件时,该文件将正确删除其自身,但如果我尝试写入它,它将附加。

有人对覆盖文件内容有任何建议吗?

谢谢,卢克。

【问题讨论】:

  • 不可能发生这种情况。 w 模式下的 fopen 是“打开文件,截断为零长度”。如果它是附加的,你必须以a 模式打开

标签: php fopen fwrite overwrite unlink


【解决方案1】:

使用wa+打开和截断:

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

fopen

w+:开放读写;将文件指针放在文件的开头并将文件截断为零长度。如果文件不存在,请尝试创建它。

a+:开放读写;将文件指针放在文件末尾。如果文件不存在,请尝试创建它。

【讨论】:

  • 你一定是做错了什么。正如手册所说:它截断为 0 长度。
  • 我在使用 string = string + newString 并忘记在第二次点击保存之前调用 string = "" 所以它只是每次都添加新的
【解决方案2】:
file_put_contents($savePath,$fileContent);

如果文件不存在,将覆盖或创建。

【讨论】:

    【解决方案3】:

    阅读这将有助于显示 fopen 的所有选项

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

    【讨论】:

      【解决方案4】:

      发现错误,我忘记在我的应用程序中重置一个字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 2014-12-19
        • 2012-02-07
        • 1970-01-01
        • 2015-01-30
        相关资源
        最近更新 更多