mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-05-06 20:02:41 +08:00
修复: 存储目标创建/连接测试/类型选择三个关键问题
1. 修复 oneof 白名单仅含 4 种类型,阿里云/腾讯/七牛/FTP/Rclone 类型的存储目标无法创建(binding 验证直接拒绝) 2. 修复本地磁盘 TestConnection 报 "directory not found", 在 List 前先 Mkdir 确保目录存在 3. 前端存储类型选项明确标注 Rclone 支持 SFTP/Azure/Dropbox 等
This commit is contained in:
@@ -21,7 +21,7 @@ import (
|
||||
|
||||
type StorageTargetUpsertInput struct {
|
||||
Name string `json:"name" binding:"required,min=1,max=128"`
|
||||
Type string `json:"type" binding:"required,oneof=local_disk google_drive s3 webdav"`
|
||||
Type string `json:"type" binding:"required,oneof=local_disk google_drive s3 webdav aliyun_oss tencent_cos qiniu_kodo ftp rclone"`
|
||||
Description string `json:"description" binding:"max=255"`
|
||||
Enabled bool `json:"enabled"`
|
||||
Config map[string]any `json:"config" binding:"required"`
|
||||
|
||||
@@ -26,8 +26,12 @@ func newProvider(providerType storage.ProviderType, rfs fs.Fs) *Provider {
|
||||
|
||||
func (p *Provider) Type() storage.ProviderType { return p.providerType }
|
||||
|
||||
// TestConnection 通过列出根目录验证连通性。
|
||||
// TestConnection 验证连通性。对本地磁盘会先确保目录存在。
|
||||
func (p *Provider) TestConnection(ctx context.Context) error {
|
||||
// 确保根目录存在(本地磁盘等后端需要预创建)
|
||||
if err := p.rfs.Mkdir(ctx, ""); err != nil {
|
||||
return fmt.Errorf("rclone test connection (mkdir): %w", err)
|
||||
}
|
||||
_, err := p.rfs.List(ctx, "")
|
||||
if err != nil {
|
||||
return fmt.Errorf("rclone test connection: %w", err)
|
||||
|
||||
@@ -301,5 +301,5 @@ export const storageTargetTypeOptions = [
|
||||
{ label: 'Google Drive', value: 'google_drive' },
|
||||
{ label: 'WebDAV', value: 'webdav' },
|
||||
{ label: 'FTP', value: 'ftp' },
|
||||
{ label: 'Rclone (70+ 后端)', value: 'rclone' },
|
||||
{ label: 'Rclone — SFTP / Azure / Dropbox / OneDrive 等 70+ 后端', value: 'rclone' },
|
||||
] as const
|
||||
|
||||
Reference in New Issue
Block a user