feat(ftp-server): support resumable downloading (#7792)

This commit is contained in:
KirCute_ECT
2025-01-10 20:50:20 +08:00
committed by GitHub
parent 6812ec9a6d
commit 25b4b55ee1
5 changed files with 52 additions and 17 deletions

View File

@ -83,9 +83,6 @@ func (a *AferoAdapter) ReadDir(name string) ([]os.FileInfo, error) {
func (a *AferoAdapter) GetHandle(name string, flags int, offset int64) (ftpserver.FileTransfer, error) {
fileSize := a.nextFileSize
a.nextFileSize = 0
if offset != 0 {
return nil, errs.NotSupport
}
if (flags & os.O_SYNC) != 0 {
return nil, errs.NotSupport
}
@ -106,6 +103,9 @@ func (a *AferoAdapter) GetHandle(name string, flags int, offset int64) (ftpserve
return nil, errors.New("file already exists")
}
if (flags & os.O_WRONLY) != 0 {
if offset != 0 {
return nil, errs.NotSupport
}
trunc := (flags & os.O_TRUNC) != 0
if fileSize > 0 {
return OpenUploadWithLength(a.ctx, path, trunc, fileSize)
@ -113,7 +113,7 @@ func (a *AferoAdapter) GetHandle(name string, flags int, offset int64) (ftpserve
return OpenUpload(a.ctx, path, trunc)
}
}
return OpenDownload(a.ctx, path)
return OpenDownload(a.ctx, path, offset)
}
func (a *AferoAdapter) SetNextFileSize(size int64) {