mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 16:44:23 +08:00
This commit is contained in:
1 parent
13dbacad15
commit
f71000befd
45 files changed
+4383
-422
No files matched your search
@@ -17,6 +17,7 @@ package ofdgo
|
||||
import (
|
||||
"archive/zip"
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -546,6 +547,31 @@ func (r *Reader) readFileView(name string) ([]byte, error) {
|
||||
return data, err
|
||||
}
|
||||
|
||||
// readFileViewContext 读取包内文件并响应取消,已加载数据直接借用
|
||||
// 入参: ctx 取消上下文, name 文件名
|
||||
// 返回: []byte 只读文件内容, error 读取或取消错误
|
||||
func (r *Reader) readFileViewContext(ctx context.Context, name string) ([]byte, error) {
|
||||
if err := ctx.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if data, ok := r.files[cleanPackagePath(name)]; ok {
|
||||
return data, nil
|
||||
}
|
||||
input, err := r.openFile(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer input.Close()
|
||||
data, err := io.ReadAll(imageInput{ReadCloser: input, context: ctx})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := ctx.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// readFileData 统一解析包内路径并区分缓存借用与独立读取
|
||||
// 入参: name 文件名
|
||||
// 返回: []byte 文件内容, bool 是否借用缓存, error 错误信息
|
||||
|
||||
Reference in new issue
Block a user