Skip to content

关于图片偶尔上传不了的情况,麻烦大佬你进行修复 #35

Description

@jinghunsanzu

1. 时间戳精度不足导致文件名冲突

  • 问题: PHP的time()函数只有秒级精度,高并发时容易产生相同文件名
  • 影响: 后上传的文件会覆盖先上传的文件
  • 位置: /BugRepoter/app/controllers/PublicControllers.phpdeup_img 方法
  1. Session过期处理不当
  • 问题: 用户session过期后,domain_content_key丢失,无法解密图片URL
  • 影响: 图片显示失败,返回空白或错误
  • 位置: /BugRepoter/app/controllers/PublicControllers.phpenup_img 方法
  1. 大文件内存限制
  • 问题: gzcompress/gzuncompress处理大文件时可能超出PHP内存限制
  • 影响: 大图片上传失败
  • 位置: /BugRepoter/config/function.phpbinary_encode/binary_decode 函数
  1. 错误处理不完善
  • 问题: 前端和后端缺乏完善的错误处理机制
  • 影响: 用户无法得知具体错误原因
  • 位置: Summernote回调函数和PHP控制器

修复方案

修复1: 改进文件名生成机制

// 在 PublicControllers.php 的 deup_img 方法中
$filename = microtime(true) . '_' . uniqid() . '_' . rand(1000, 9999);

修复2: 添加Session有效性检查

// 在 PublicControllers.php 的 enup_img 方法中
if (!session_id() || !isset($_SESSION['domain_content_key'])) {
    http_response_code(401);
    exit('Session expired');
}

修复3: 增加内存限制和错误处理

// 在 function.php 的 binary_encode/binary_decode 中
ini_set('memory_limit', '256M');
// 添加try-catch错误处理

修复4: 改进前端错误处理

// 在 Summernote 的 onImageUpload 回调中
// 添加详细的错误处理和用户提示

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions