feat(内存占用): 支持附件流式下载,降低大附件内存占用
build.yaml / build (push) Successful in 37s

This commit is contained in:
xiaoqidun committed 2026-09-14 16:15:47 +08:00
1 parent fb3a9e8148
commit 6525b01bab
4 files changed
+50 -15

No files matched your search

+16 -4
View File
@@ -543,22 +543,34 @@ func (r *Reader) Attachments() ([]Attachment, error) {
return doc.Attachments.Attachment, nil
}
// AttachmentData 获取附件文件数据
// OpenAttachment 打开附件文件流,调用方负责关闭,完整读取后校验ZIP数据
// 入参: id 附件标识
// 返回: []byte 附件数据, error 错误信息
func (r *Reader) AttachmentData(id string) ([]byte, error) {
// 返回: io.ReadCloser 附件文件流, error 错误信息
func (r *Reader) OpenAttachment(id string) (io.ReadCloser, error) {
attachments, err := r.Attachments()
if err != nil {
return nil, err
}
for _, attachment := range attachments {
if attachment.ID == id {
return r.ResData(attachment.FileLoc)
return r.openFile(r.ResPath(attachment.FileLoc))
}
}
return nil, fmt.Errorf("attachment not found: %s", id)
}
// AttachmentData 获取附件文件数据
// 入参: id 附件标识
// 返回: []byte 附件数据, error 错误信息
func (r *Reader) AttachmentData(id string) ([]byte, error) {
stream, err := r.OpenAttachment(id)
if err != nil {
return nil, err
}
defer stream.Close()
return io.ReadAll(stream)
}
// CustomTags 获取自定义标引
// 返回: []CustomTag 自定义标引列表, error 错误信息
func (r *Reader) CustomTags() ([]CustomTag, error) {