Skip to content

[问题] 推送至 Motrix 报错 16 #51

Closed

Description

@Wjavan

现象

通过 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

  1. Wjavan commented on Nov 10, 2026

    @Wjavan
    OwnerAuthor

    已在 #57 修掉。

    报错 16 是 aria2 建不了目标文件,与 RPC 密钥、报文格式不是一类问题。脚本这边有两个原因:

    1. 保存路径首装默认是 C:。它不是一个目录,aria2 会把它和文件名拼成 C:/文件名,等于直接往 C 盘根目录写;普通用户没有根目录写权限,任务在返回任务号之后才失败,所以面板可能显示已推送,Motrix 里却是错误 16。
    2. 文件名里的 : * ? " < > | 在 Windows 上不能建文件。a*b.zip、a?b.zip 会直接报 16;冒号更隐蔽——a:b.zip 会被写成 0 字节文件 a 加一条 NTFS 数据流,面板成功但目录里看不到文件。

    临时绕过:设置 → Aria 配置 → 把「保存路径」清空(用下载器自己的下载目录),或填完整目录,比如 D:\Downloads,别只填 C:。

    下个版本会把这几处收掉:保存路径只填盘符或相对路径时不再下发,改用下载器默认目录并提示一次;文件名里的 Windows 非法字符统一换成 _,过长名字截短但保留扩展名。面板那句「下载已开始」也会改成「已提交 N 个任务」——推送只代表下载器收下了任务,真正能不能落盘仍要看下载器的任务列表。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions