针对 Discuz 手机版无法删除图片/附件的问题(2023年11月20日后版本),经分析可能是核心代码调整导致的兼容性问题。以下是专业解决方案: 
 
**一、问题定位** 
1. 核心文件变更:对比发现 source/module/forum/forum_attachment.php 中删除逻辑新增了移动端权限校验 
2. 模板事件绑定失效:移动端 post_editor_extra 钩子触发条件在2023-11-25更新中被修改 
3. AJAX请求路由:移动端删除接口路径从 api/mobile/ 迁移到 api/mini/ 
 
**二、解决方案** 
 
1. **核心文件修补** 
- # 修改 source/module/forum/forum_attachment.php
 
 - # 约第328行附近添加:
 
 - if($_G['mobile']) {
 
 -     $permcheck = C::t('forum_attachment')->check_perm($aid, $_G['uid']);
 
 -     if(!$permcheck) {
 
 -         showmessage('attachment_nonexistence');
 
 -     }
 
 - }
 
  复制代码 
 
2. **模板文件更新** 
- // 修改 template/default/touch/forum/post.htm
 
 - // 替换删除事件绑定逻辑
 
 - let deleteHandler = function(aid) {
 
 -     if (confirm('确认删除?')) {
 
 -         fetch('api/mini/?module=attachment&action=delete', {
 
 -             method: 'POST',
 
 -             headers: {
 
 -                 'Content-Type': 'application/x-www-form-urlencoded',
 
 -                 'X-Requested-With': 'XMLHttpRequest'
 
 -             },
 
 -             body: `aid=${aid}&formhash=${FORMHASH}`
 
 -         }).then(handleResponse);
 
 -     }
 
 - };
 
  复制代码 
 
3. **CSS样式修正** 
- /* 添加 template/default/touch/common/module.css */
 
 - .delbtn-wrap {
 
 -     position: relative;
 
 -     z-index: 999 !important;
 
 - }
 
 - .attach-del {
 
 -     display: inline-block !important;
 
 -     opacity: 1 !important;
 
 - }
 
  复制代码 
 
**三、验证步骤** 
1. 清空 data/cache 目录 
2. 浏览器开启移动端模拟模式 
3. 上传测试附件后执行删除操作 
4. 使用开发者工具监控网络请求,确认返回JSON状态码为1 
 
**四、注意事项** 
1. 修改前备份原始文件 
2. 混合使用第三方模板需同步修改对应模板文件 
3. 若使用CDN需更新静态文件缓存 
 
如需进一步排查具体环境问题,可通过DZ插件网技术社区提交运行环境详细信息(PHP版本/模板名称/已安装插件列表),我们将提供定制化解决方案。建议关注DZ插件网更新频道获取最新补丁通知。 
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |