feat(输入输出): 统一输入输出与保存目标
build.yaml / build (push) Successful in 46s

This commit is contained in:
xiaoqidun committed 2026-10-19 09:29:36 +08:00
1 parent b06df462ea
commit e222cddabb
20 files changed
+264 -230

No files matched your search

+6 -6
View File
@@ -27,8 +27,8 @@ import (
// ArchiveFile 描述已生成的归档文件,不关闭调用方提供的源读取器
type ArchiveFile struct {
Name string
Source *Source
Name string
Input *Input
}
// ArchiveOptions 设置ZIP封装,压缩不重新编码归档内已生成的文档
@@ -46,7 +46,7 @@ func WriteArchive(ctx context.Context, writer io.Writer, files []ArchiveFile, op
}
names := map[string]bool{}
for _, file := range files {
if !fs.ValidPath(file.Name) || file.Name == "." || strings.Contains(file.Name, "\\") || names[file.Name] || file.Source == nil {
if !fs.ValidPath(file.Name) || file.Name == "." || strings.Contains(file.Name, "\\") || names[file.Name] || file.Input == nil {
return 0, fmt.Errorf("invalid archive file %q", file.Name)
}
names[file.Name] = true
@@ -76,15 +76,15 @@ func WriteArchive(ctx context.Context, writer io.Writer, files []ArchiveFile, op
if err != nil {
return count, err
}
source := convertReader{ctx: ctx, source: file.Source}
input := convertReader{ctx: ctx, input: file.Input}
if buffer == nil {
buffer = make([]byte, 32<<10)
}
written, err := io.CopyBuffer(entry, io.NewSectionReader(source, 0, file.Source.Size()), buffer)
written, err := io.CopyBuffer(entry, io.NewSectionReader(input, 0, file.Input.Size()), buffer)
if err != nil {
return count, err
}
if written != file.Source.Size() {
if written != file.Input.Size() {
return count, io.ErrUnexpectedEOF
}
}