【问题标题】:How to delete a file with javascript?如何使用javascript删除文件?
【发布时间】:2010-03-15 20:58:14
【问题描述】:

这些例子没有运气:
Javascript File remove
Javascript FSO DeleteFile Method
Deleting a File

文件没有特殊权限。
JQuery 有没有办法做到这一点?

要求是 - 当加载另一个页面时,必须从 web 目录中删除某个文件。没有安全问题,因为这是在封闭的网络上。

感谢任何帮助。

谢谢。

【问题讨论】:

标签: javascript jquery html user-interface file


【解决方案1】:

使用纯 JavaScript 是无法做到的。不过,使用 AJAX 调用删除文件的服务器端脚本会起作用。

【讨论】:

    【解决方案2】:

    Javascript 不能删除文件,它会被阻止,因为它会导致巨大的安全漏洞。这些链接用于通过 JS 处理的 ActiveX 控件。使用服务器端语言。

    【讨论】:

      【解决方案3】:

      你不能通过 HTTP 删除文件(理论上你可以,但它没有实现。)

      最简单的方法是设置一个小型服务器端脚本(例如在 ASP 或 PHP 中)并从 JavaScript 调用它。服务器端脚本需要适当的权限才能进行删除,否则没有问题。

      在 PHP 中,开始看起来像这样:(没有将解决方案扩展到完全安全的解决方案,因为您没有说明您在哪个平台上)

      <? 
      
        // STILL INSECURE!!!!
        // Do not use in any public place without authentication.
        // Allows deletion of any file within /my/files
        // Usage: filename.php?file=filename 
      
        $basedir = "/my/files";
        $file_to_delete = $_REQUEST["file"];  
      
        $path = realpath($basedir."/".$file_to_delete);
        if (substr($path, 0, strlen($basedir)) != $basedir)
         die ("Access denied"); 
      
        unlink($path);
      
      ?>
      

      你可以这样调用脚本:

      http://yourserver/directory/delete_file.php?file=directory/filename
      

      【讨论】:

      • 我想再次强调代码中的警告,供任何快速阅读此内容的人使用 - 此代码允许您删除脚本有权访问的任何文件。永远不要在任何地方上传这个!
      • @Rich 是的。我添加了基本的安全性(对硬编码的基本目录的限制。)
      【解决方案4】:

      您不能仅使用在访问者浏览器中运行的 JavaScript 来删除远程服务器上的文件。这必须使用服务器端脚本来完成。

      【讨论】:

        【解决方案5】:

        如果您以 RESTFUL 方式执行此操作,请发送HTTP DELETE request

        jQuery 的ajax method 声明您可以使用方法参数来指定“DELETE”,但指出某些浏览器可能不支持它。

        显然,您将需要一个接受 DELETE 请求的网络服务器,并应用某种身份验证/授权,以便 joe 随机访问者无法删除您的文件。我相信 Apache 的 mod_dav 会让你从这里开始。

        【讨论】:

          【解决方案6】:

          Javascript 是一种客户端语言。所以你不能直接删除服务器上的文件。您提供的所有示例可能仅用于删除本地计算机上的文件,而不是删除到服务器中。

          但是你可以调用一些服务器页面函数来删除文件。

          【讨论】:

            【解决方案7】:

            您无法使用 JavaScript 删除文件,因为它在本地运行。因此,它甚至不会触及外部文件。

            您需要使用有权编辑文件的服务器端语言,例如 PHP、RoR 或 ASP。

            但是,您可以使用 jQuery 通过 AJAX 调用服务器端代码,例如 $.get 或 $.post,然后服务器端代码将其删除,看起来好像 JS 正在删除文件。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-08-11
              • 2010-12-20
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多