From 28b422721544477979f071c658ab328f5ad21079 Mon Sep 17 00:00:00 2001 From: zicla Date: Thu, 4 Apr 2019 02:03:20 +0800 Subject: [PATCH] Finish the image cache preview things. --- rest/alien_service.go | 4 ++-- rest/image_cache_model.go | 2 ++ rest/image_cache_service.go | 17 +++++++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/rest/alien_service.go b/rest/alien_service.go index c0df0a9..de778ef 100644 --- a/rest/alien_service.go +++ b/rest/alien_service.go @@ -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) } //文件下载次数加一,为了加快访问速度,异步进行 diff --git a/rest/image_cache_model.go b/rest/image_cache_model.go index 6066891..066f45c 100644 --- a/rest/image_cache_model.go +++ b/rest/image_cache_model.go @@ -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)"` diff --git a/rest/image_cache_service.go b/rest/image_cache_service.go index 407199e..dca1e9c 100644 --- a/rest/image_cache_service.go +++ b/rest/image_cache_service.go @@ -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)