php - PHP 文件移动功能无法正常工作
问题描述
主要问题是图像文件没有从临时位置移动到新位置。但它没有给出任何错误。并且所有 mysql 查询都在工作。所有的 html 部分也可以工作。
$newFileName = $_POST['filename'];
$imageTitle = $_POST['filetitle'];
$imageDesc = $_POST['filedesc'];
$file = $_FILES['file'];
$fileName = $file['name'];
$fileType = $file['type'];
$fileTempName = $file['temp_name'];
$fileError = $file['error'];
$fileSize = $file['size'];
$fileExt = explode(".",$fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array("jpg","jpeg","png");
if(in_array($fileActualExt,$allowed)){
if($fileError === 0){
if($fileSize < 20000000){
$imageFullName = $newFileName . "." . uniqid("",true) . "." . $fileActualExt;
$fileDestination = "../gallery/" . $imageFullName;
include_once 'dbh.inc.php';
if(!empty($imageTitle) || !empty($imageDesc)){
$sqlSelect = "SELECT * FROM gallery;";
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$sqlSelect)){
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$rowCount = mysqli_num_rows($result);
$setImageOrder = $rowCount+1;
$sqlInsert = "INSERT INTO gallery(title,description,imgfullname,ordergallery) VALUES(?,?,?,?);";
if(mysqli_stmt_prepare($stmt,$sqlInsert)){
mysqli_stmt_bind_param($stmt,"ssss", $imageTitle,$imageDesc,$imageFullName,$setImageOrder);
mysqli_stmt_execute($stmt);
move_uploaded_file($fileTempName, $fileDestination);
}
}
}
}
}
}
解决方案
您可能在这里被否决了,因为您对代码实际功能的描述有些模糊。您似乎也没有测试或发布过MCVE。例如,为什么SELECT * FROM gallery;
您使用数据的目的只是显示计数(这与您描述的问题无关)。
您对文件名的处理是明智的,尽管理想情况下路径应该在文档根目录之外(以及随后由脚本介导的读取访问)。
“所有 mysql 查询都在工作”表明执行线程正在到达move_uploaded_file(),我们不应该猜测代码是如何工作的/您可能已经运行了哪些诊断。这些“if”语句中的每一个都应该有一个“else”。每个 mysqli_*() 调用都应该检查返回值。您应该检查 move_uploaded_file() 的返回值。您还应该检查日志文件中的错误和警告(在验证日志记录机制是否按预期工作之后)。
粗略地浏览一下代码(我想相关的 POST 变量已被填充),我要查找的下一个位置(在返回值和日志之后)是目标目录的权限。
推荐阅读
- python - 基于 CreateView 和 UpdateView 的类在 Django 项目中不起作用
- mongodb - 如何在 mongodb 中获得唯一访问,以便唯一性由日期间隔定义?
- python - 使用 Selenium 下载数据,但输入教科书有一个默认列表可供选择(Python)
- macos - Proxyman 无法监听 go 可执行文件的 http 请求
- css - 更长(更具体)的子选择器会比更短(不太具体)的后代选择器更快吗?
- apache-kafka - 使用扁平化规范将 json 数组分解为单独的 druid 行
- yocto - 避免库进入 Yocto 中的最终图像
- sql - 如何在 Oracle SQL 中的 XML 标记中进行搜索?
- javascript - Chrome 扩展程序:“未定义”错误被忽略?
- elixir - Elixir - 比较 2 个列表并更新最新项目