使用 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 程序应该控制的文件服务器中?”之类的东西。和“我相信这个特定用户会删除这个文件吗?”
我想在我的 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 程序应该控制的文件服务器中?”之类的东西。和“我相信这个特定用户会删除这个文件吗?”