Browse Source

fix

pull/439/head
丁超 9 years ago
parent
commit
dd01a3c9c4
  1. 61
      weed/server/filer_server_handlers_read.go
  2. 2
      weed/server/volume_server_handlers_read.go
  3. BIN
      weed/weed
  4. BIN
      weed/weed_linux_amd64

61
weed/server/filer_server_handlers_read.go

@ -1,20 +1,29 @@
package weed_server
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"path"
"strconv"
"strings"
"github.com/chrislusf/seaweedfs/weed/filer"
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/operation"
"github.com/chrislusf/seaweedfs/weed/security"
ui "github.com/chrislusf/seaweedfs/weed/server/filer_ui"
"github.com/chrislusf/seaweedfs/weed/util"
"github.com/syndtr/goleveldb/leveldb"
)
//文件服务器地址
var fileUrl string = "http://127.0.0.1:8888"
var resourceUrl string = "http://resource.k12cloud.cn"
// listDirectoryHandler lists directories and folers under a directory
// files are sorted by name and paginated via "lastFileName" and "limit".
// sub directories are listed on the first page, when "lastFileName"
@ -87,11 +96,29 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request,
return
}
//先在文件存储中查找该文件是否存在,不存在则去七牛查找,下载并上传到文件存储中
fileId, err := fs.filer.FindFile(r.URL.Path)
if err == filer.ErrNotFound {
data, fileName, contentType, err := download(resourceUrl + r.URL.Path)
if err != nil {
glog.V(0).Infoln(err)
return
}
jwt := security.GetJwt(r)
_, err = operation.Upload(fileUrl+r.URL.Path, fileName, bytes.NewReader(data), false, contentType, jwt)
if err != nil {
glog.V(0).Infoln(err)
return
}
glog.V(0).Infoln("path", resourceUrl+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)
fileId, err = fs.filer.FindFile(reqUrl)
if err == filer.ErrNotFound {
glog.V(0).Infoln(reqUrl, "not exist")
r.Header.Add("exist", "0")
@ -152,3 +179,35 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request,
io.Copy(w, resp.Body)
}
func download(u string) (data []byte, fileName, contentType string, err error) {
client := &http.Client{}
request, err := http.NewRequest("GET", u, nil)
if err != nil {
return
}
resp, err := client.Do(request)
if err != nil {
return
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
err = fmt.Errorf("%s", "下载失败")
}
data, err = ioutil.ReadAll(resp.Body)
if err != nil {
return
}
contentType = resp.Header.Get("Content-type")
ur, err := url.Parse(u)
if err != nil {
return
}
_, fileName = path.Split(ur.Path)
return
}

2
weed/server/volume_server_handlers_read.go

@ -145,7 +145,7 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
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://121.41.99.232:50001"+reqUrl, filename, bytes.NewReader(n.Data), false, "image/jpeg", jwt)
_, err = operation.Upload(fileUrl+reqUrl, filename, bytes.NewReader(n.Data), false, "image/jpeg", jwt)
if err != nil {
glog.V(0).Infoln(err)
}

BIN
weed/weed

BIN
weed/weed_linux_amd64

Loading…
Cancel
Save