Repository: AlistGo/alist (language: go)

Issue:
离线下载种子文件时会丢失目录
### Please make sure of the following things

- [x] I have read the [documentation](https://alist.nn.ci).
- [x] I'm sure there are no duplicate issues or discussions.
- [x] I'm sure it's due to `alist` and not something else(such as `Dependencies` or `Operational`).
- [x] I'm sure I'm using the latest version

### Alist Version / Alist 版本

v3.0.3

### Driver used / 使用的存储驱动

189cloud

### Describe the bug / 问题描述

aria2下载一个种子,其目录如下
```
aaa/1
aaa/2
aaa/3
```
假设下载到/189/bbb目录中,下载并转存后最终的目录结构是
```
/189/bbb/1
/189/bbb/2
/189/bbb/3
```
而不是

```
/189/bbb/aaa/1
/189/bbb/aaa/2
/189/bbb/aaa/3
```


### Reproduction / 复现链接

null

### Logs / 日志

_No response_


Discussion / hints:
我也遇到了，在使用离线下载种子，下载文件夹内文件时，下好文件夹内一个文件就alist后台显示错误

Fix patch:
diff --git a/internal/aria2/monitor.go b/internal/aria2/monitor.go
index 2a617e43289..583cd72d43c 100644
--- a/internal/aria2/monitor.go
+++ b/internal/aria2/monitor.go
@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"os"
 	"path"
+	"path/filepath"
 	"strconv"
 	"sync"
 	"sync/atomic"
@@ -171,7 +172,12 @@ func (m *Monitor) Complete() error {
 					ReadCloser: f,
 					Mimetype:   mimetype,
 				}
-				return op.Put(tsk.Ctx, storage, dstDirActualPath, stream, tsk.SetProgress)
+				relDir, err := filepath.Rel(m.tempDir, filepath.Dir(file.Path))
+				if err != nil {
+					log.Errorf("find relation directory error: %v", err)
+				}
+				newDistDir := filepath.Join(dstDirActualPath, relDir)
+				return op.Put(tsk.Ctx, storage, newDistDir, stream, tsk.SetProgress)
 			},
 		}))
 	}


Test patch: