我有一个网站,我希望用户能够以文本文件的形式下载一些数据,而不将该文件永久保存在我的服务器上。我尝试的方法是使用 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');
}
我收到错误。我想知道的第一件事是我是否以正确的方式处理这个问题。如果没有,有更好的方法吗?然后我想知道的第二件事是为什么我会收到此错误以及我需要更改什么才能使其正常工作。
最佳答案
我会检查服务器权限,看看正在运行的 php 脚本是否能够删除创建的文件。如果你使用的是基于 UNIX 的脚本,我会运行
ls -l /usr/var/
对存储文件的目录执行命令,查看已分配给它们的权限。
关于javascript - 尝试生成一个临时txt文件然后将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43267581/