requests/upload_file.go

57 lines
1.1 KiB
Go
Raw Normal View History

2018-10-17 06:25:17 +00:00
package requests
import (
"io"
"log"
"os"
"path/filepath"
)
// UploadFile 上传文件的结构
type UploadFile struct {
FileName string
FieldName string
FileReaderCloser io.ReadCloser
}
// UploadFileFromPath 从本地文件获取上传文件
func UploadFileFromPath(fileName string) (*UploadFile, error) {
fd, err := os.Open(fileName)
if err != nil {
return nil, err
}
return &UploadFile{FileReaderCloser: fd, FileName: fileName}, nil
}
// UploadFileFromGlob 根据Glob从本地文件获取上传文件
func UploadFileFromGlob(glob string) ([]*UploadFile, error) {
files, err := filepath.Glob(glob)
if err != nil {
return nil, err
}
if len(files) == 0 {
log.Println("UploadFileFromGlob: len(files) == 0")
}
var ufiles []*UploadFile
for _, f := range files {
if s, err := os.Stat(f); err != nil || s.IsDir() {
continue
}
fd, err := os.Open(f)
if err != nil {
log.Println(fd.Name(), err)
} else {
ufiles = append(ufiles, &UploadFile{FileReaderCloser: fd, FileName: filepath.Base(fd.Name())})
}
}
return ufiles, nil
}