mirror of https://github.com/Xhofe/alist
🚧 check upload file
parent
6f0959a98e
commit
939c9cd5ac
|
@ -364,6 +364,9 @@ type UploadResp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver AliDrive) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver AliDrive) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
const DEFAULT uint64 = 10485760
|
const DEFAULT uint64 = 10485760
|
||||||
var count = int64(math.Ceil(float64(file.GetSize()) / float64(DEFAULT)))
|
var count = int64(math.Ceil(float64(file.GetSize()) / float64(DEFAULT)))
|
||||||
var finish uint64 = 0
|
var finish uint64 = 0
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
_ "github.com/Xhofe/alist/drivers/189"
|
_ "github.com/Xhofe/alist/drivers/189"
|
||||||
_ "github.com/Xhofe/alist/drivers/alidrive"
|
_ "github.com/Xhofe/alist/drivers/alidrive"
|
||||||
_ "github.com/Xhofe/alist/drivers/alist"
|
_ "github.com/Xhofe/alist/drivers/alist"
|
||||||
|
"github.com/Xhofe/alist/drivers/base"
|
||||||
_ "github.com/Xhofe/alist/drivers/ftp"
|
_ "github.com/Xhofe/alist/drivers/ftp"
|
||||||
_ "github.com/Xhofe/alist/drivers/google"
|
_ "github.com/Xhofe/alist/drivers/google"
|
||||||
_ "github.com/Xhofe/alist/drivers/lanzou"
|
_ "github.com/Xhofe/alist/drivers/lanzou"
|
||||||
|
@ -14,4 +15,27 @@ import (
|
||||||
_ "github.com/Xhofe/alist/drivers/s3"
|
_ "github.com/Xhofe/alist/drivers/s3"
|
||||||
_ "github.com/Xhofe/alist/drivers/shandian"
|
_ "github.com/Xhofe/alist/drivers/shandian"
|
||||||
_ "github.com/Xhofe/alist/drivers/webdav"
|
_ "github.com/Xhofe/alist/drivers/webdav"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var NoCors string
|
||||||
|
var NoUpload string
|
||||||
|
|
||||||
|
func GetConfig() {
|
||||||
|
for k, v := range base.GetDriversMap() {
|
||||||
|
if v.Config().NoCors {
|
||||||
|
NoCors += k + ","
|
||||||
|
}
|
||||||
|
if v.Upload(nil, nil) != base.ErrEmptyFile {
|
||||||
|
NoUpload += k + ","
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NoCors = strings.Trim(NoCors, ",")
|
||||||
|
NoUpload = strings.Trim(NoUpload, ",")
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
log.Debug("all init")
|
||||||
|
GetConfig()
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type DriverConfig struct {
|
type DriverConfig struct {
|
||||||
|
@ -78,14 +77,8 @@ func GetDriver(name string) (driver Driver, ok bool) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetNoCors() string {
|
func GetDriversMap() map[string]Driver {
|
||||||
res := make([]string, 0)
|
return driversMap
|
||||||
for k, v := range driversMap {
|
|
||||||
if v.Config().NoCors {
|
|
||||||
res = append(res, k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return strings.Join(res, ",")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDrivers() map[string][]Item {
|
func GetDrivers() map[string][]Item {
|
||||||
|
|
|
@ -11,6 +11,7 @@ var (
|
||||||
ErrNotImplement = errors.New("not implement")
|
ErrNotImplement = errors.New("not implement")
|
||||||
ErrNotSupport = errors.New("not support")
|
ErrNotSupport = errors.New("not support")
|
||||||
ErrNotFolder = errors.New("not a folder")
|
ErrNotFolder = errors.New("not a folder")
|
||||||
|
ErrEmptyFile = errors.New("empty file")
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -240,6 +240,9 @@ func (driver FTP) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver FTP) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver FTP) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
realPath := utils.Join(account.RootFolder, file.ParentPath, file.Name)
|
realPath := utils.Join(account.RootFolder, file.ParentPath, file.Name)
|
||||||
conn, err := driver.Login(account)
|
conn, err := driver.Login(account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -250,6 +250,9 @@ func (driver GoogleDrive) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver GoogleDrive) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver GoogleDrive) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
parentFile, err := driver.File(file.ParentPath, account)
|
parentFile, err := driver.File(file.ParentPath, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -196,6 +196,9 @@ func (driver Native) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver Native) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver Native) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
fullPath := filepath.Join(account.RootFolder, file.ParentPath, file.Name)
|
fullPath := filepath.Join(account.RootFolder, file.ParentPath, file.Name)
|
||||||
_, err := driver.File(filepath.Join(file.ParentPath, file.Name), account)
|
_, err := driver.File(filepath.Join(file.ParentPath, file.Name), account)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|
|
@ -280,6 +280,9 @@ func (driver Onedrive) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver Onedrive) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver Onedrive) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
var err error
|
var err error
|
||||||
if file.GetSize() <= 4*1024*1024 {
|
if file.GetSize() <= 4*1024*1024 {
|
||||||
err = driver.UploadSmall(file, account)
|
err = driver.UploadSmall(file, account)
|
||||||
|
|
|
@ -232,6 +232,9 @@ func (driver S3) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver S3) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver S3) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
s, ok := sessionsMap[account.Name]
|
s, ok := sessionsMap[account.Name]
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("can't find [%s] session", account.Name)
|
return fmt.Errorf("can't find [%s] session", account.Name)
|
||||||
|
|
|
@ -227,6 +227,9 @@ func (driver Shandian) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver Shandian) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver Shandian) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
parentFile, err := driver.File(file.ParentPath, account)
|
parentFile, err := driver.File(file.ParentPath, account)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -182,6 +182,9 @@ func (driver WebDav) Delete(path string, account *model.Account) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver WebDav) Upload(file *model.FileStream, account *model.Account) error {
|
func (driver WebDav) Upload(file *model.FileStream, account *model.Account) error {
|
||||||
|
if file == nil {
|
||||||
|
return base.ErrEmptyFile
|
||||||
|
}
|
||||||
c := driver.NewClient(account)
|
c := driver.NewClient(account)
|
||||||
path := utils.Join(file.ParentPath, file.Name)
|
path := utils.Join(file.ParentPath, file.Name)
|
||||||
err := c.WriteStream(driver.WebDavPath(path), file, 0644)
|
err := c.WriteStream(driver.WebDavPath(path), file, 0644)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Xhofe/alist/drivers/base"
|
"github.com/Xhofe/alist/drivers"
|
||||||
"github.com/Xhofe/alist/model"
|
"github.com/Xhofe/alist/model"
|
||||||
"github.com/Xhofe/alist/server/common"
|
"github.com/Xhofe/alist/server/common"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
@ -47,12 +47,17 @@ func GetSettingsPublic(c *gin.Context) {
|
||||||
common.ErrorResp(c, err, 400)
|
common.ErrorResp(c, err, 400)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
settings = append(settings, model.SettingItem{
|
settings = append(settings, []model.SettingItem{{
|
||||||
Key: "no cors",
|
Key: "no cors",
|
||||||
Value: base.GetNoCors(),
|
Value: drivers.NoCors,
|
||||||
Description: "",
|
Description: "",
|
||||||
Type: "string",
|
Type: "string",
|
||||||
})
|
}, {
|
||||||
|
Key: "no upload",
|
||||||
|
Value: drivers.NoUpload,
|
||||||
|
Description: "",
|
||||||
|
Type: "string",
|
||||||
|
}}...)
|
||||||
common.SuccessResp(c, settings)
|
common.SuccessResp(c, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue