gin-vue-admin 2.0代码重构
This commit is contained in:
@@ -1,75 +0,0 @@
|
||||
package servers
|
||||
|
||||
import (
|
||||
"gin-vue-admin/tools"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// 前端传来文件片与当前片为什么文件的第几片
|
||||
// 后端拿到以后比较次分片是否上传 或者是否为不完全片
|
||||
// 前端发送每片多大
|
||||
// 前端告知是否为最后一片且是否完成
|
||||
|
||||
const breakpointDir = "./breakpointDir/"
|
||||
const finishDir = "./fileDir/"
|
||||
|
||||
func BreakPointContinue(content []byte, fileName string, contentNumber int, contentTotal int, fileMd5 string) (error, string) {
|
||||
path := breakpointDir + fileMd5 + "/"
|
||||
err := os.MkdirAll(path, os.ModePerm)
|
||||
if err != nil {
|
||||
return err, path
|
||||
}
|
||||
err, pathc := makeFileContent(content, fileName, path, contentNumber)
|
||||
return err, pathc
|
||||
|
||||
}
|
||||
|
||||
func CheckMd5(content []byte, chunkMd5 string) (CanUpload bool) {
|
||||
fileMd5 := tools.MD5V(content)
|
||||
if fileMd5 == chunkMd5 {
|
||||
return true // "可以继续上传"
|
||||
} else {
|
||||
return false // "切片不完整,废弃"
|
||||
}
|
||||
}
|
||||
|
||||
func makeFileContent(content []byte, fileName string, FileDir string, contentNumber int) (error, string) {
|
||||
path := FileDir + fileName + "_" + strconv.Itoa(contentNumber)
|
||||
f, err := os.Create(path)
|
||||
defer f.Close()
|
||||
if err != nil {
|
||||
return err, path
|
||||
} else {
|
||||
_, err = f.Write(content)
|
||||
if err != nil {
|
||||
return err, path
|
||||
}
|
||||
}
|
||||
return nil, path
|
||||
}
|
||||
|
||||
func MakeFile(fileName string, FileMd5 string) (error, string) {
|
||||
rd, err := ioutil.ReadDir(breakpointDir + FileMd5)
|
||||
if err != nil {
|
||||
return err, finishDir + fileName
|
||||
}
|
||||
_ = os.MkdirAll(finishDir, os.ModePerm)
|
||||
fd, _ := os.OpenFile(finishDir+fileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
|
||||
for k, _ := range rd {
|
||||
content, _ := ioutil.ReadFile(breakpointDir + FileMd5 + "/" + fileName + "_" + strconv.Itoa(k))
|
||||
_, err = fd.Write(content)
|
||||
if err != nil {
|
||||
_ = os.Remove(finishDir + fileName)
|
||||
return err, finishDir + fileName
|
||||
}
|
||||
}
|
||||
defer fd.Close()
|
||||
return nil, finishDir + fileName
|
||||
}
|
||||
|
||||
func RemoveChunk(FileMd5 string) error {
|
||||
err := os.RemoveAll(breakpointDir + FileMd5)
|
||||
return err
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package servers
|
||||
|
||||
import (
|
||||
"gin-vue-admin/init/qmsql"
|
||||
"gin-vue-admin/model/modelInterface"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
//获取分页功能 接收实现了分页接口的结构体 返回搜索完成的结果 许需要自行scan 或者find
|
||||
func PagingServer(paging modelInterface.Paging, info modelInterface.PageInfo) (err error, db *gorm.DB, total int) {
|
||||
limit := info.PageSize
|
||||
offset := info.PageSize * (info.Page - 1)
|
||||
err = qmsql.DEFAULTDB.Model(paging).Count(&total).Error
|
||||
db = qmsql.DEFAULTDB.Limit(limit).Offset(offset).Order("id desc")
|
||||
return err, db, total
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package servers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func ReportFormat(c *gin.Context, success bool, msg string, json gin.H) {
|
||||
// 开始时间
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"success": success,
|
||||
"msg": msg,
|
||||
"data": json,
|
||||
})
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package servers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"gin-vue-admin/config"
|
||||
"github.com/qiniu/api.v7/auth/qbox"
|
||||
"github.com/qiniu/api.v7/storage"
|
||||
"mime/multipart"
|
||||
"time"
|
||||
)
|
||||
|
||||
var accessKey string = config.GinVueAdminconfig.Qiniu.AccessKey // 你在七牛云的accessKey 这里是我个人测试号的key 仅供测试使用 恳请大家不要乱传东西
|
||||
var secretKey string = config.GinVueAdminconfig.Qiniu.SecretKey // 你在七牛云的secretKey 这里是我个人测试号的key 仅供测试使用 恳请大家不要乱传东西
|
||||
|
||||
// 接收两个参数 一个文件流 一个 bucket 你的七牛云标准空间的名字
|
||||
func Upload(file *multipart.FileHeader, bucket string, urlPath string) (err error, path string, key string) {
|
||||
putPolicy := storage.PutPolicy{
|
||||
Scope: bucket,
|
||||
}
|
||||
mac := qbox.NewMac(accessKey, secretKey)
|
||||
upToken := putPolicy.UploadToken(mac)
|
||||
cfg := storage.Config{}
|
||||
// 空间对应的机房
|
||||
cfg.Zone = &storage.ZoneHuadong
|
||||
// 是否使用https域名
|
||||
cfg.UseHTTPS = false
|
||||
// 上传是否使用CDN上传加速
|
||||
cfg.UseCdnDomains = false
|
||||
formUploader := storage.NewFormUploader(&cfg)
|
||||
ret := storage.PutRet{}
|
||||
putExtra := storage.PutExtra{
|
||||
Params: map[string]string{
|
||||
"x:name": "github logo",
|
||||
},
|
||||
}
|
||||
f, e := file.Open()
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
return e, "", ""
|
||||
}
|
||||
dataLen := file.Size
|
||||
fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) // 文件名格式 自己可以改 建议保证唯一性
|
||||
err = formUploader.Put(context.Background(), &ret, upToken, fileKey, f, dataLen, &putExtra)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
//qmlog.QMLog.Info(err)
|
||||
return err, "", ""
|
||||
}
|
||||
return err, urlPath + "/" + ret.Key, ret.Key
|
||||
}
|
||||
|
||||
func DeleteFile(bucket string, key string) error {
|
||||
|
||||
mac := qbox.NewMac(accessKey, secretKey)
|
||||
cfg := storage.Config{
|
||||
// 是否使用https域名进行资源管理
|
||||
UseHTTPS: false,
|
||||
}
|
||||
// 指定空间所在的区域,如果不指定将自动探测
|
||||
// 如果没有特殊需求,默认不需要指定
|
||||
//cfg.Zone=&storage.ZoneHuabei
|
||||
bucketManager := storage.NewBucketManager(mac, &cfg)
|
||||
err := bucketManager.Delete(bucket, key)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user