From b2e7576d21e71e0d5b5417c2805baf64ebd17ed9 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 10 十一月 2023 10:00:27 +0800 Subject: [PATCH] url更改为获取publicUrl --- WeedFSClient.go | 44 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 36 insertions(+), 8 deletions(-) diff --git a/WeedFSClient.go b/WeedFSClient.go index 5264404..d94b910 100644 --- a/WeedFSClient.go +++ b/WeedFSClient.go @@ -9,10 +9,11 @@ "mime/multipart" "net/http" "github.com/kirinlabs/HttpRequest" + "strings" "time" ) -func UploadFile(uri string, fileName string, fileData []byte) (weedFilePath string, err error) { +func UploadFile(uri string, fileName string, fileData []byte,timeout time.Duration) (weedFilePath string, err error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) _, err = writer.CreateFormFile("file", fileName) @@ -28,7 +29,9 @@ //writer.WriteField(key, val) request, err := http.NewRequest("POST", uri, request_reader) request.Header.Add("Content-Type", writer.FormDataContentType()) - timeout := time.Duration(5 * time.Second) //瓒呮椂鏃堕棿50ms + if timeout <=0 { + timeout = 5 * time.Second + } client := &http.Client{Timeout: timeout} resp, err := client.Do(request) if err != nil { @@ -56,33 +59,56 @@ _, err := body.ReadFrom(resp.Body) if err != nil { fmt.Println("UploadFile body.ReadForm(resp.Body) err:", err) + return "", err } m := make(map[string]interface{}) if err := json.Unmarshal([]byte(body.String()), &m); err != nil { return "", err } - filePath := m["fileUrl"].(string) - return filePath,nil + if furl,ok := m["fileUrl"]; ok { + filePath := furl.(string) + return appendCollection2Uri(uri, filePath),nil + } else { + fmt.Println("no fileUrl in m, m:", m) + return "", errors.New("file server err") + } } } -// 鑾峰緱涓�涓猣id +func appendCollection2Uri(weedfsUri, fileUri string) string { + //鍒ゆ柇weedfsUri涓槸鍚﹀寘鍚玞ollection鍙傛暟 + idx := strings.Index(weedfsUri, "?") + if idx > -1 { + return fileUri + weedfsUri[idx:] + } else { + return fileUri + } +} +// 鑾峰緱涓�涓猣id url eg:http://192.168.5.23:6333/assign/dir?collection=11111-persistent func GetFid(url string)(weedPath string ,err error) { res,err := HttpRequest.NewRequest().Post(url) if err != nil { fmt.Println("缃戠粶浼犺緭閿欒锛�") + return "", err } var m map[string]interface{} err = res.Json(&m) if err != nil { return "",err } - return "http://"+m["url"].(string)+"/"+m["fid"].(string),err + u,ok1 := m["publicUrl"] + f,ok2 := m["fid"] + if ok1 && ok2 { + filePath := "http://"+u.(string)+"/"+f.(string) + return appendCollection2Uri(url, filePath),err + } else { + return "", errors.New("鏈幏鍙栧埌url鍜宖id") + } } -func UpDateFile(uri string, fileName string, fileData []byte) (m map[string]interface{}, err error) { +func UpDateFile(uri string, fileName string, fileData []byte,timeout time.Duration) (m map[string]interface{}, err error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) _, err = writer.CreateFormFile("file", fileName) @@ -98,7 +124,9 @@ //writer.WriteField(key, val) request, err := http.NewRequest("POST", uri, request_reader) request.Header.Add("Content-Type", writer.FormDataContentType()) - timeout := time.Duration(5 * time.Second) //瓒呮椂鏃堕棿50ms + if timeout <= 0 { + timeout = time.Duration(5 * time.Second) //瓒呮椂鏃堕棿5s + } client := &http.Client{Timeout: timeout} resp, err := client.Do(request) if err != nil { -- Gitblit v1.8.0