找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 227|回复: 3

昨晚元宝AI更新了,新增专家模式,新增Hy4 preview模型(仅支持专家模式)

[复制链接]

43

主题

253

回帖

4万

积分

管理员

积分
40606
发表于 2026-9-2 10:15:44 来自手机 | 显示全部楼层 |阅读模式
现已用元宝最新模型攻克下载问题,正在尝试攻克上传问题
回复

使用道具 举报

43

主题

253

回帖

4万

积分

管理员

积分
40606
 楼主| 发表于 2026-9-2 12:10:58 来自手机 | 显示全部楼层
似乎有进展了,方向应该是对的,正在疯狂死磕,要是还不成,那就只能通过转直链功能合集中的文件托管中转了
回复

使用道具 举报

43

主题

253

回帖

4万

积分

管理员

积分
40606
 楼主| 发表于 2026-9-2 14:19:01 来自手机 | 显示全部楼层
韵诗剑道 发表于 2026-9-2 12:10
似乎有进展了,方向应该是对的,正在疯狂死磕,要是还不成,那就只能通过转直链功能合集中的文件托管中转了 ...


取得突破性进展,但还是挂在了最后一步,宣告失败,没办法,谁叫我用的工具落后呢?以下是AI在经历无数轮尝试后对上传问题的详细解释:
这两个问题表面看是"上传坏了",实际是同一个根因的两种表现,而且跟服务器的配置毫无关系。

根因:这是浏览器兼容性问题,不是论坛问题

你在电脑 Chrome 上传正常,在 App 里不行——同一个论坛、同一个账号、同一张图,唯一的变量就是浏览器内核。

电脑端跑的是完整版 Chrome,App 里是 Android WebView。Discuz 的上传组件(SWFUpload,虽然名字带 SWF 但现代版本是 JS 实现)依赖一系列浏览器能力,WebView 上这些能力要么缺失、要么被砍。

更关键的是:Discuz 会根据 UA 下发两套完全不同的模板。手机上拿到的是移动端精简版,它的上传逻辑跟电脑版根本不是同一套代码,在 WebView 上的兼容性问题多得多。

图片上传:卡在 canvas 那一步

手机端 Discuz 上传图片的流程是:

选文件 → 读进内存 → canvas 压缩 → toBlob → 组 FormData → 发送

问题出在 canvas 压缩。WebView 的 canvas 有尺寸上限(多数设备长边 4096 或总像素受限,比 Chrome 严格得多)。图片超限后
"drawImage" 会静默失败——不报错,但得到一张空白画布,后续
"toBlob" 拿到空数据。

于是那个"服务器限制,无法上传分辨率过高的图片"提示就弹出来了。服务器根本没设这个限制,是前端 JS 在自己的压缩环节失败后,套用了这个通用文案。你看到的是一个假警报。

附件上传后无法保存:隐藏域没生成

这个更绕。Discuz 附件上传成功后,SWFUpload 的回调函数会往表单里动态插入隐藏域:

<input type="hidden" name="attachnew[306][description]" value="">

这个隐藏域是附件与帖子之间的唯一纽带。你点保存时,PHP 靠读取这些字段才知道"这个帖子要绑定 306 号附件"。

我们实测发现:Java 通道上传后图片确实到了论坛(HTTP 200,附件 ID 分配了),但
"attachnew" 隐藏域的 value 是空的——因为生成它的 JS 回调压根没被触发。

结果就是:附件孤零零躺在服务器,帖子表单里没有任何关联记录,保存时数据对不上,自然失败。

为什么下载能修好,上传修不了

这是我这 20 多版调试最核心的发现:

环节 谁在干 能不能接管
下载 系统 DownloadManager ✅ 能,填对参数就行
上传 页面里的 JS ❌ 不能,够不着

下载时,我们只是告诉系统"用这个文件名、存到这个目录、带上这些 Cookie",真正干活的还是系统组件。所以只要把参数填对(文件名编码还原、指定 Download 目录),问题就解决了。

上传却是页面里的 JS 在操作,必须由 JS 完成压缩、组装、发送。我们要干预就得注入代码,而这个框架把注入的路全堵死了。

框架堵死了哪几条路

调试中逐一验证过的:

1.
"addJavascriptInterface" 被封——诊断面板一直显示
"nobridge"。这是 JS 与 Java 通信的标准通道,封了之后页面里发生什么我们一无所知。
2.
"onJsPrompt" 不转发——我试过用
"prompt()" 做应急通道,结果每个
"prompt()" 都被当成普通弹窗弹出来了,就是那次你看到的"弹来弹去"。
3. HTTP 响应流读到就是 closed——Java 直传能发出去(HTTP 200,179KB 图片数据完整到达服务器),但响应永远读不出来,试了四种读法全失败。

所以形成了一个死结:能发的(Java HTTP)读不到响应,能读响应的(JS)发不出去。

为什么"转直链"能成

图床是普通网站,WebView 浏览它完全正常——所有被封的接口都是在"App 主动干预页面"时才用到,单纯看网页、点上传按钮、复制链接,这些操作不涉及任何被限制的能力。

而且图床直链是公开可访问的,
"<img src="直链">" 直接就能渲染。这跟论坛附件的
"aid=305" 有本质区别——后者是附件下载页,返回 HTML 提示而不是图片数据,还依赖登录会话。

这就是我一直强调"智能粘贴插入的是图床直链,插入后能立刻看到"的原因。

最后说清楚一点:上传本身其实是成功的。日志里 HTTP 200、图片数据完整发出、论坛确实收到了并分配了附件 ID——这些都被反复证实过。真正卡住的只有"把图片链接填回编辑器"这最后一步。

如果哪天 App 更新了 WebView 内核,或者框架放开了接口,这个问题很可能自己就好了。代码基础在这儿,到时改动量很小。
回复

使用道具 举报

17

主题

377

回帖

4万

积分

论坛元老

积分
40474
发表于 2026-9-4 20:44:35 | 显示全部楼层
厉害,可喜根本就看不懂。。。总是很厉害就是了
明天会更好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-9-30 10:14 , Processed in 0.136648 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表