【发布时间】:2017-04-06 23:55:00
【问题描述】:
我有一个网站,我希望用户能够将一些数据下载为文本文件,而无需将文件永久保存在我的服务器上。我正在尝试的方法是使用 JavaScript 发送 POST,使用 PHP 生成和保存文本文件。成功后,JavaScript 将在单独的窗口中打开该文件。几秒钟的延迟后,它会发送一个 POST 并包含要删除的文件。
我大部分都在工作,但由于某种原因,当我尝试删除文件时,我不断收到错误 - 没有这样的文件或目录。我不知道为什么,特别是因为使用测试文件在同一目录中删除工作正常。这是我在 javascript 端使用的:
////CREATE FILE
function exportGroup() {
$.post("../Modules/Export_Mod/export_mod.php",
{ submit:'export',
groupIndex: groupSelect.value,
userRole: 'admin',
serial: <?php echo $serial;?>
},
function(data,status){
//open created file in new window
window.open("../Modules/Export_Mod/"+data);
removeExport(data);
});
};
//////REMOVE FILE
function removeExport(filename) {
///After 1 second, send post to delete file
setTimeout(function() {
$.post("../Modules/Export_Mod/export_mod.php",
{ submit:'removeExport',
file: filename
},
function(data,status){
data;
});
}, 1000);
}
还有我的 PHP:
//I'm creating the file successfully with this
...
$filename = $groupName."_group_export.txt";
$content = $header.$dataStr;
$strlength = strlen($content);
$create = fopen($filename, "w");
$write = fwrite($create, $content, $strlength);
$close = fclose($create);
但是当我稍后尝试删除第二个(或更多)时:
if (($_POST)&&($_POST['submit']=='removeExport')){
$file = $_POST['file'];
unlink($file); ///works when using an already-existing file in the same directory ... unlink('test.txt');
}
我得到了错误。我想知道的第一件事是我是否以正确的方式接近这一点。如果没有,有没有更好的方法来做到这一点?然后我想知道的第二件事是为什么我会收到此错误以及我需要更改哪些内容才能使其正常工作。
【问题讨论】:
-
您编写的代码允许删除任何文件,包括包含此代码的脚本。
-
有没有另一种方式生成txt文件,让用户下载,然后删除?
-
我完全不明白你为什么需要存储任何文件。
-
能否将
errors添加到您的问题中?
标签: javascript php post