PHP上传图片后无法移动至指定upload文件夹
图片上传失败问题排查与修复
核心问题:路径拼接错误
你代码中move_uploaded_file的路径拼接缺少目录分隔符,导致文件没有被放入upload文件夹,而是被命名成了upload+文件名的形式。修正路径:move_uploaded_file($_FILES["Company_Pic"]["tmp_name"], "../mojob/upload/" . $filename);检查目录权限与存在性
- 确认
../mojob/upload文件夹已创建,若不存在需手动创建 - 确保服务器进程(如apache、www-data)对该文件夹有写入权限,可设置权限为755(生产环境推荐)或777(测试环境临时使用)
- 确认
添加错误调试代码
在上传代码后加入错误检查,快速定位问题:$uploadPath = "../mojob/upload/" . $filename; if (!move_uploaded_file($_FILES["Company_Pic"]["tmp_name"], $uploadPath)) { print_r(error_get_last()); }安全优化建议
- 避免直接使用用户上传的原始文件名,生成唯一文件名防止冲突和恶意文件:
$fileExt = pathinfo($filename, PATHINFO_EXTENSION); $uniqueName = uniqid('company_', true) . "." . $fileExt; // 后续数据库存储和上传路径都使用$uniqueName - 验证文件类型和大小,限制仅允许图片上传:
$allowedMime = ['image/jpeg', 'image/png', 'image/gif']; if (!in_array($_FILES["Company_Pic"]["type"], $allowedMime)) { exit("仅支持JPG、PNG、GIF格式图片"); } if ($_FILES["Company_Pic"]["size"] > 2 * 1024 * 1024) { // 限制2MB exit("图片大小不能超过2MB"); }
- 避免直接使用用户上传的原始文件名,生成唯一文件名防止冲突和恶意文件:
内容的提问来源于stack exchange,提问作者Mr Smith
相关产品推荐
相关产品推荐

