使用 XMLHttpRequest 删除文件

Using XMLHttpRequest to delete a file

我想在我的 JS 脚本中删除一个文件。

我曾尝试使用 XMLHttpRequest 打开一个 php 文件,该文件删除了该文件,但不幸的是它不起作用。我希望有人能指出我出了什么问题:

JS:

function rmbusyfile(filename){
  var xhr2 = new XMLHttpRequest();
  xhr2.open('POST', 'rmbusyfile.php');
  xhr2.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
  xhr2.send("file="+encodeURIComponent(filename));
  console.log("file=" + filename);
}

rmbusyfile.php:

<?php
if (isset($_POST["file"])){
  unlink($_POST["file"]);
}else{
//print_r($_POST);
echo "Error";
http_response_code(400);
}
?>

PHP 使用 Content-Type header 来确定如何(以及是否可以)解析请求 body.

您声称要发送 JSON,其中:

  • PHP不支持自动解析成$_POST
  • 与您发送的数据不匹配。

因此,PHP 不会尝试解析 body 并且 $_POST 留空。


不要躺在Content-Typeheader。告诉 PHP 您真正发送的数据格式。

xhr2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

请注意,您允许用户通过他们喜欢的任何路径。这使他们能够删除服务器上用户 PHP 是 运行 具有写入权限的任何文件。您应该向输入添加一些验证以检查诸如“这个文件是否真的存在?”、“这个文件是否在这个 PHP 程序应该控制的文件服务器中?”之类的东西。和“我相信这个特定用户会删除这个文件吗?”