You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

aria2c RPC接口中aria2.addTorrent方法忽略dir选项问题

问题描述

在服务器上将aria2c以守护进程(RPC接口)运行,调用aria2.addTorrent方法添加种子并指定下载目录时,文件能正常下载,但未保存到指定目录,而是存放在aria2c的当前工作目录。

启动守护进程的命令

aria2c --log="the.log" --disable-ipv6 \
--enable-rpc --rpc-listen-all --rpc-listen-port=7777 \
--seed-time=0 --bt-tracker-connect-timeout=30 --bt-tracker-timeout=10

初始RPC请求JSON

{
    "jsonrpc":"2.0",
    "id":user_id,
    "method":"aria2.addTorrent",
    "params":[mfile_base64,[{ "dir":outdir_str }]],
}
  • user_id:随机用户名或ID
  • mfile_base64:种子文件(.torrent)内容的Base64编码
  • outdir_str:期望的文件下载目录

已确认目标目录存在且有读写权限,为本地常规目录。

编辑1:尝试修改参数格式后的问题

将参数改为如下格式后,下载无法启动,返回参数类型错误:

{
    "jsonrpc":"2.0",
    "id":user_id,
    "method":"aria2.addTorrent",
    "params":[mfile_base64,{ "dir":outdir_str }],
}

错误返回:

{'id': 'user1', 'jsonrpc': '2.0', 'error': {'code': 1, 'message': 'The parameter at 1 has wrong type.'}}
解决方案

1. 修正RPC请求的参数结构

aria2.addTorrent的正确参数定义为:
aria2.addTorrent(torrent, options[, files])

  • torrent:Base64编码的种子内容(必填)
  • options:对象类型的下载配置(如dir,必填)
  • files:数组类型,指定要下载的文件索引(可选,省略则下载全部)

你初始请求中错误地将options包裹在数组里,导致aria2将其识别为可选的files参数,而非下载配置,因此默认使用工作目录。

2. 修复JSON语法错误

你编辑1中的JSON请求末尾存在多余逗号(params数组后的逗号),这会导致JSON解析失败,触发参数类型错误。需确保JSON格式严格合法,无多余标点。

3. 使用绝对路径作为下载目录

确保outdir_str为绝对路径(如Linux的/home/user/downloads,Windows的D:\\downloads)。相对路径会以aria2c守护进程的工作目录为基准,容易导致路径不符合预期。

正确的RPC请求示例

{
    "jsonrpc": "2.0",
    "id": "user1",
    "method": "aria2.addTorrent",
    "params": [
        "你的种子文件Base64编码内容",
        {"dir": "/absolute/path/to/your/directory"}
    ]
}

若需指定下载部分文件,可添加第三个参数:

{
    "jsonrpc": "2.0",
    "id": "user1",
    "method": "aria2.addTorrent",
    "params": [
        "你的种子文件Base64编码内容",
        {"dir": "/absolute/path/to/your/directory"},
        [0, 2] // 仅下载种子中索引为0和2的文件
    ]
}

内容的提问来源于stack exchange,提问作者カルロサグ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:23:22