Documentation
¶
Overview ¶
Package cloudfilename 提供云端下载文件名生成与清理规则。 服务端 (pkg/server) 与客户端 (cmd/sclient) 共用同一套规则, 保证 URL → 默认保存文件名的推导结果双端一致(wget 行为)。
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrEntryEmptyURL = errors.New("cloud download entry: URL is empty") ErrEntryInvalidURL = errors.New("cloud download entry: invalid URL") ErrEntryBadScheme = errors.New("cloud download entry: unsupported URL scheme (only http/https)") ErrEntryMissingHost = errors.New("cloud download entry: missing host") ErrEntryDupURL = errors.New("cloud download entry: duplicate URL with different filename") ErrEntryUnsafeFilename = errors.New("cloud download entry: filename contains unsafe characters") )
Functions ¶
func DefaultFromURL ¶
DefaultFromURL 遵循 wget 行为从 URL 推导默认文件名并做安全清理。 返回即为可安全落盘的文件名,调用方无需再调用 Safe。 内部先将不安全版通过 Safe 清理,保证"生成即安全"。
func ResolveFilename ¶
ResolveFilename 返回条目的最终保存文件名。
- Filename 非空:仅当 Safe 后不变(不含非法字符)才返回原文, 否则返回哨兵错误 ErrEntryUnsafeFilename(只校验不修改)。
- Filename 为空:按 URL 自动生成(DefaultFromURL,内部已 Safe)。
func Safe ¶
Safe 清理文件名中的路径分隔符与非法字符,防止路径穿越。
- 替换 \ / ? : < > | " * \t 与 NUL 为下划线,去除首尾空白与点
- 抵御 Windows 保留设备名(基名匹配时加 "_" 前缀)
- 按 maxNameBytes 字节截断(优先保留扩展名,不劈开 UTF-8 字符)
清理后为空时返回 "download"。
func ValidateEntries ¶
ValidateEntries 校验一组条目:全部通过 URL 格式校验,且同 URL 不允许出现 不同 Filename。返回首个错误(哨兵错误)。
Types ¶
Click to show internal directories.
Click to hide internal directories.