diff --git a/internal/message/message.go b/internal/message/message.go index ede1b098..c7e035b6 100644 --- a/internal/message/message.go +++ b/internal/message/message.go @@ -1 +1,6 @@ package message + +type Messager interface { + Send(string, interface{}) error + Receive(string) (string, error) +} diff --git a/pkg/utils/file.go b/pkg/utils/file.go index cedf9cb8..7a6beaae 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -1,9 +1,13 @@ package utils import ( - log "github.com/sirupsen/logrus" + "io" + "io/ioutil" "os" "path/filepath" + + "github.com/alist-org/alist/v3/conf" + log "github.com/sirupsen/logrus" ) // Exists determine whether the file exists @@ -28,3 +32,20 @@ func CreatNestedFile(path string) (*os.File, error) { } return os.Create(path) } + +// CreateTempFile create temp file from io.ReadCloser, and seek to 0 +func CreateTempFile(r io.ReadCloser) (*os.File, error) { + f, err := ioutil.TempFile(conf.Conf.TempDir, "file-*") + if err != nil { + return nil, err + } + _, err = io.Copy(f, r) + if err != nil { + return nil, err + } + _, err = f.Seek(0, io.SeekStart) + if err != nil { + return nil, err + } + return f, nil +}