You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP生成文件如何指定保存路径到上层目录diagramasBPMN?

问题解决方法

一、修正JS端错误

  • 路径错误:路径开头的/代表站点根目录,开头加/后后续的../相对路径跳转不会生效,要使用相对路径请去掉开头的/,根据你JS文件和savel.php的实际相对位置调整路径层级
  • 语法错误:原$.post的参数对象未闭合,回调函数错误放在了参数对象内部
    修正后JS代码示例:
// 请根据实际文件相对位置调整savel.php的路径,此处示例为JS文件所在目录往上两层找savel.php
$.post('../../savel.php', { 
  diagramaXml: xml, 
  idDiagrama: diagramaID 
}, function(data) { 
  console.log('success'); 
});

二、修正PHP端错误

  • 语法错误:file_put_contents第一个参数是字符串类型,必须用引号包裹
  • 路径错误:/diagramasBPMN/代表服务器系统根目录下的diagramasBPMN文件夹,不是你项目的上层目录,要根据savel.php和目标目录的相对位置写路径,比如savel.php所在目录的上层有diagramasBPMN文件夹,就用../diagramasBPMN/
  • 安全问题:直接使用$_POST['idDiagrama']拼接路径会存在目录遍历攻击风险,需用basename()过滤文件名
  • 权限检查:要确保diagramasBPMN目录的权限允许Web服务运行用户(如www-data、apache、nginx等)写入,Linux环境可执行sudo chmod 755 目录路径或者sudo chown -R www-data:www-data 目录路径授权
    修正后PHP代码示例:
<?php
// 1. 过滤文件名,防止目录遍历
$fileName = basename($_POST['idDiagrama']);
// 2. 拼接正确的目标路径,此处示例为savel.php所在目录的上层的diagramasBPMN目录
$savePath = '../diagramasBPMN/' . $fileName;
// 3. 写入内容,加错误判断
$saveResult = file_put_contents($savePath, $_POST['diagramaXml']);
if ($saveResult !== false) {
  die('file has been saved');
} else {
  die('save failed, please check directory permission or path');
}
?>

额外排查项

  • 如果使用绝对路径更稳妥,可以用__DIR__常量获取当前savel.php所在目录的绝对路径,再拼接上层目录:$savePath = __DIR__ . '/../diagramasBPMN/' . $fileName;
  • 可先在PHP中输出$savePath打印实际生成的路径,确认和你预期的目标路径一致

内容的提问来源于stack exchange,提问作者ctovelox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 23:45:01