代码之家  ›  专栏  ›  技术社区  ›  Toto

将文件移动到回收站(PHP)

  •  6
  • Toto  · 技术社区  · 16 年前

    这个问题与Windows安装的php5有关。

    做文件 unlink() 使恢复困难。

    相反,我想将文件移到回收站(不做 exec() )

    你知道吗?

    谢谢你的帮助。

    3 回复  |  直到 12 年前
        1
  •  8
  •   Alix Axel    16 年前

    这是唯一可行的解决方案,它在所有驱动器中都是可移植的。

    function Recycle($filename)
    {
        if (is_file($filename) === true)
        {
            $filename = realpath($filename);
            $recycle = glob(current(explode('\\', $filename, 2)) . '\\RECYCLER\\*', GLOB_ONLYDIR);
    
            if (is_array($recycle) === true)
            {
                return rename($filename, current($recycle) '\\' . basename($filename));
            }
        }
    
        return false;
    }
    

    已删除的文件已正确移动到,例如:

    O:\RECYCLER\S-1-5-21-1715567821-1390067357-1417001333-1003
    

    从回收站恢复应该是可能的,但我没有测试它。

    编辑 :我刚刚更新了此函数,以处理具有相对路径的文件。

        2
  •  7
  •   TigerTiger    16 年前

    为什么不创建一个文件夹并将其命名为“回收站”…然后,而不是执行unlink()。把文件移到这个“回收站”文件夹??

    如果要移动文件,请使用 rename() PHP函数。

    然后,您可以运行一个cron脚本来检查文件的时间,然后您可以删除超过10天的文件等。

    我希望这有帮助。

        3
  •  0
  •   Frank N dqthe    12 年前

    这对我有用, using MaDdoGs CmdUtils ,在win7 x64、php 5.4.24下。还有大文件,奇数文件名…

    function recycle($filename)
    {
        if ( !is_file($filename) )
            return false;
        system( __DIR__.'/third-party/Recycle.exe -f "'.$filename.'"', $r );
        return $r;
    }