87 lines
1.4 KiB
Go
87 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/gofrs/uuid"
|
|
"github.com/syndtr/goleveldb/leveldb"
|
|
"github.com/syndtr/goleveldb/leveldb/opt"
|
|
)
|
|
|
|
var (
|
|
storagepath string = "./upload"
|
|
)
|
|
|
|
func init() {
|
|
sp := os.Getenv("p")
|
|
if sp != "" {
|
|
storagepath = sp
|
|
}
|
|
}
|
|
|
|
func FileGet(id *string) (*[]byte, error) {
|
|
db, err := leveldb.OpenFile(storagepath, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer db.Close()
|
|
|
|
ret, err := db.Has([]byte(*id), &opt.ReadOptions{
|
|
DontFillCache: false,
|
|
Strict: 0,
|
|
})
|
|
if err != nil {
|
|
return nil, errors.New("文件不存在")
|
|
}
|
|
|
|
if !ret {
|
|
return nil, errors.New("文件不存在")
|
|
}
|
|
|
|
val, err := db.Get([]byte(*id), nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &val, nil
|
|
}
|
|
|
|
func FileUpload(payload *[]byte) (*string, error) {
|
|
db, err := leveldb.OpenFile(storagepath, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer db.Close()
|
|
key := strings.ReplaceAll(uuid.Must(uuid.NewV6()).String(), "-", "")
|
|
if err := db.Put([]byte(key), *payload, nil); err != nil {
|
|
return nil, err
|
|
}
|
|
return &key, nil
|
|
}
|
|
|
|
func FileUpdate() {
|
|
db, err := leveldb.OpenFile(storagepath, nil)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer db.Close()
|
|
|
|
ret, err := db.Has([]byte("hello 49"), &opt.ReadOptions{
|
|
DontFillCache: false,
|
|
Strict: 0,
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println(ret)
|
|
|
|
val, err := db.Get([]byte("hello 4"), nil)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println(string(val))
|
|
}
|