问题
File._download_file() 在下载远程文件时会直接把 File.name 拼入临时文件名。部分平台上游返回的文件名可能包含 /、\ 或空字节等字符,此时下载目标路径会被意外拆成子目录,导致下载失败;在极端情况下也会让临时文件路径偏离预期的单文件名形式。
影响
- 使用 URL 构造
File 消息段并转发到需要本地文件的平台时,异常文件名可能导致 get_file() 失败。
- 文件名来自外部平台或用户输入,不能假设始终是安全 basename。
期望
下载远程 File 时应只使用清洗后的 basename,移除空字节,并在临时目录不存在时主动创建目录。
问题
File._download_file()在下载远程文件时会直接把File.name拼入临时文件名。部分平台上游返回的文件名可能包含/、\或空字节等字符,此时下载目标路径会被意外拆成子目录,导致下载失败;在极端情况下也会让临时文件路径偏离预期的单文件名形式。影响
File消息段并转发到需要本地文件的平台时,异常文件名可能导致get_file()失败。期望
下载远程
File时应只使用清洗后的 basename,移除空字节,并在临时目录不存在时主动创建目录。