Finish the image cache preview things.

This commit is contained in:
zicla 2019-04-04 02:03:20 +08:00
parent c371d9d5bd
commit 28b4227215
3 changed files with 17 additions and 6 deletions

View File

@ -125,10 +125,10 @@ func (this *AlienService) PreviewOrDownload(
}
//直接使用缓存中的信息
this.matterService.DownloadFile(writer, request, CONFIG.MatterPath+imageCache.Path, matter.Name, withContentDisposition)
this.matterService.DownloadFile(writer, request, GetUserCacheRootDir(imageCache.Username)+imageCache.Path, imageCache.Name, withContentDisposition)
} else {
this.matterService.DownloadFile(writer, request, CONFIG.MatterPath+matter.Path, matter.Name, withContentDisposition)
this.matterService.DownloadFile(writer, request, GetUserFileRootDir(matter.Username)+matter.Path, matter.Name, withContentDisposition)
}
//文件下载次数加一,为了加快访问速度,异步进行

View File

@ -5,7 +5,9 @@ package rest
*/
type ImageCache struct {
Base
Name string `json:"name" gorm:"type:varchar(255) not null"`
UserUuid string `json:"userUuid" gorm:"type:char(36)"`
Username string `json:"username" gorm:"type:varchar(45) not null"`
MatterUuid string `json:"matterUuid" gorm:"type:char(36);index:idx_mu"`
Mode string `json:"mode" gorm:"type:varchar(512)"`
Md5 string `json:"md5" gorm:"type:varchar(45)"`

View File

@ -6,6 +6,7 @@ import (
"image"
"net/http"
"os"
"path/filepath"
"strconv"
"strings"
)
@ -194,11 +195,17 @@ func (this *ImageCacheService) cacheImage(writer http.ResponseWriter, request *h
user := this.userDao.FindByUuid(matter.UserUuid)
//resize图片
dstImage := this.ResizeImage(request, GetUserCacheRootDir(user.Username)+matter.Path)
dstImage := this.ResizeImage(request, GetUserFileRootDir(user.Username)+matter.Path)
cacheImagePath := GetSimpleFileName(matter.Path) + "_" + mode + extension
cacheImageName := GetSimpleFileName(matter.Name) + "_" + mode + extension
cacheImageRelativePath := GetSimpleFileName(matter.Path) + "_" + mode + extension
cacheImageAbsolutePath := GetUserCacheRootDir(user.Username) + GetSimpleFileName(matter.Path) + "_" + mode + extension
fileWriter, err := os.Create(cacheImagePath)
//创建目录。
dir := filepath.Dir(cacheImageAbsolutePath)
MakeDirAll(dir)
fileWriter, err := os.Create(cacheImageAbsolutePath)
this.PanicError(err)
defer func() {
e := fileWriter.Close()
@ -215,11 +222,13 @@ func (this *ImageCacheService) cacheImage(writer http.ResponseWriter, request *h
//相关信息写到缓存中去
imageCache := &ImageCache{
Name: cacheImageName,
UserUuid: matter.UserUuid,
Username: user.Username,
MatterUuid: matter.Uuid,
Mode: mode,
Size: fileInfo.Size(),
Path: cacheImagePath,
Path: cacheImageRelativePath,
}
this.imageCacheDao.Create(imageCache)