1 changed files with 40 additions and 0 deletions
@ -0,0 +1,40 @@ |
|||
package core |
|||
|
|||
import ( |
|||
"io" |
|||
"os" |
|||
) |
|||
|
|||
// FileService 提供文件传输服务
|
|||
type FileService struct{} |
|||
|
|||
// FileChunk 表示文件分片
|
|||
type FileChunk struct { |
|||
FileName string // 文件名
|
|||
Data []byte // 数据分片
|
|||
Offset int64 // 偏移量,用于重组
|
|||
IsLast bool // 是否为最后一个分片
|
|||
} |
|||
|
|||
// Upload 接收文件分片并写入到本地文件
|
|||
func (f *FileService) Upload(chunk FileChunk, reply *bool) error { |
|||
// 打开或创建文件,使用追加模式
|
|||
file, err := os.OpenFile(chunk.FileName, os.O_WRONLY|os.O_CREATE, 0644) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
defer file.Close() |
|||
|
|||
// 移动到指定偏移量
|
|||
if _, err := file.Seek(chunk.Offset, io.SeekStart); err != nil { |
|||
return err |
|||
} |
|||
|
|||
// 写入数据
|
|||
if _, err := file.Write(chunk.Data); err != nil { |
|||
return err |
|||
} |
|||
|
|||
*reply = true |
|||
return nil |
|||
} |
|||
Loading…
Reference in new issue