Browse Source

缩略图、旋转增加缓存机制

pull/439/head
丁超 9 years ago
parent
commit
407909c46f
  1. 21
      weed/server/filer_server_handlers_read.go
  2. 2
      weed/server/filer_server_handlers_write.go
  3. 30
      weed/server/volume_server_handlers_read.go
  4. BIN
      weed/weed

21
weed/server/filer_server_handlers_read.go

@ -87,11 +87,24 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request,
return
}
fileId, err := fs.filer.FindFile(r.URL.Path)
reqUrl := r.URL.RequestURI()
if r.FormValue("w") != "" || r.FormValue("h") != "" || r.FormValue("r") != "" {
reqUrl = r.URL.Path + "?w=" + r.FormValue("w") + "&h=" + r.FormValue("h") + "&r=" + r.FormValue("r")
}
fileId, err := fs.filer.FindFile(reqUrl)
if err == filer.ErrNotFound {
glog.V(3).Infoln("Not found in db", r.URL.Path)
w.WriteHeader(http.StatusNotFound)
return
glog.V(0).Infoln(reqUrl, "not exist")
r.Header.Add("exist", "0")
r.Header.Add("path", r.URL.Path)
fileId, err = fs.filer.FindFile(r.URL.Path)
if err == filer.ErrNotFound {
glog.V(3).Infoln("Not found in db", r.URL.Path)
w.WriteHeader(http.StatusNotFound)
return
}
} else {
glog.V(0).Infoln(reqUrl, "exist")
r.Header.Add("exist", "1")
}
urlLocation, err := operation.LookupFileId(fs.getMasterNode(), fileId)

2
weed/server/filer_server_handlers_write.go

@ -298,7 +298,7 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) {
writeJsonError(w, r, http.StatusInternalServerError, errors.New(ret.Error))
return
}
path := r.URL.Path
path := r.URL.RequestURI()
if strings.HasSuffix(path, "/") {
if ret.Name != "" {
path += ret.Name

30
weed/server/volume_server_handlers_read.go

@ -15,6 +15,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/images"
"github.com/chrislusf/seaweedfs/weed/operation"
"github.com/chrislusf/seaweedfs/weed/security"
"github.com/chrislusf/seaweedfs/weed/storage"
"github.com/chrislusf/seaweedfs/weed/util"
)
@ -123,20 +124,31 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
}
}
}
if ext == ".png" || ext == ".jpg" || ext == ".gif" {
width, height := 0, 0
if r.FormValue("width") != "" {
width, _ = strconv.Atoi(r.FormValue("width"))
width, height, rotate := 0, 0, 0
if r.FormValue("w") != "" {
width, _ = strconv.Atoi(r.FormValue("w"))
}
if r.FormValue("height") != "" {
height, _ = strconv.Atoi(r.FormValue("height"))
if r.FormValue("h") != "" {
height, _ = strconv.Atoi(r.FormValue("h"))
}
n.Data, _, _ = images.Resized(ext, n.Data, width, height)
//旋转
if r.FormValue("rotate") != "" {
rotate, _ := strconv.Atoi(r.FormValue("rotate"))
rotate, _ = strconv.Atoi(r.FormValue("r"))
}
//缓存
if r.Header.Get("exist") != "1" && (r.FormValue("w") != "" || r.FormValue("h") != "" || r.FormValue("r") != "") {
glog.V(0).Infoln("生成")
n.Data, _, _ = images.Resized(ext, n.Data, width, height)
n.Data = images.Rotate(ext, n.Data, rotate)
reqUrl := r.Header.Get("path") + "?w=" + r.FormValue("w") + "&h=" + r.FormValue("h") + "&r=" + r.FormValue("r")
jwt := security.GetJwt(r)
_, err = operation.Upload("http://localhost:8888"+reqUrl, filename, bytes.NewReader(n.Data), false, "image/jpeg", jwt)
if err != nil {
glog.V(0).Infoln(err)
}
}
}

BIN
weed/weed

Loading…
Cancel
Save