### 现象 通过 JSON-RPC 把直链推送到 Motrix,任务未能建立,Motrix 侧报「错误 16」(Error 16)。脚本面板可能同时提示「Aria2 拒绝请求」,也可能显示推送成功。 ### 定位 Motrix 的 JSON-RPC 默认监听 16800 端口,底层是 aria2;「16」是 aria2 的错误码,含义为「无法创建或截断目标文件」。常见触发条件是保存目录不存在、无写权限、文件名在该文件系统上非法(Windows 下为 `: * ? " < > |`)、或路径过长。它与报文格式、鉴权不属于同一类问题:JSON 结构错误返回 `Parse error`(code -32700),密钥不匹配返回 `Unauthorized`。 脚本侧落到两个参数上:`dir` 取自设置页「保存路径」,首装默认值是 `C:`,只有盘符、不含路径分隔符,在 Windows 下并不是一个完整目录;`out` 是清洗后的原文件名,去掉控制字符与路径分隔符、长度截到 255 字符,但中文名按字符截断,按字节计算仍可能超出文件系统上限。另外 `aria2.addUri` 只要返回 GID 就被判为成功,任务随后失败不会回显到面板,所以错误只出现在 Motrix 一侧。 ### 影响版本 1.6.1。
Activity
Wjavan commentedon Nov 10, 2026
已在 #57 修掉。
报错 16 是 aria2 建不了目标文件,与 RPC 密钥、报文格式不是一类问题。脚本这边有两个原因:
C:。它不是一个目录,aria2 会把它和文件名拼成C:/文件名,等于直接往 C 盘根目录写;普通用户没有根目录写权限,任务在返回任务号之后才失败,所以面板可能显示已推送,Motrix 里却是错误 16。: * ? " < > |在 Windows 上不能建文件。a*b.zip、a?b.zip会直接报 16;冒号更隐蔽——a:b.zip会被写成 0 字节文件a加一条 NTFS 数据流,面板成功但目录里看不到文件。临时绕过:设置 → Aria 配置 → 把「保存路径」清空(用下载器自己的下载目录),或填完整目录,比如
D:\Downloads,别只填C:。下个版本会把这几处收掉:保存路径只填盘符或相对路径时不再下发,改用下载器默认目录并提示一次;文件名里的 Windows 非法字符统一换成
_,过长名字截短但保留扩展名。面板那句「下载已开始」也会改成「已提交 N 个任务」——推送只代表下载器收下了任务,真正能不能落盘仍要看下载器的任务列表。