From 272db028a5688e90f682240a25120a7d0b32d243 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 27 十二月 2019 15:44:14 +0800
Subject: [PATCH] add timeout set
---
WeedFSClient.go | 90 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 78 insertions(+), 12 deletions(-)
diff --git a/WeedFSClient.go b/WeedFSClient.go
index a90f6f6..f513168 100644
--- a/WeedFSClient.go
+++ b/WeedFSClient.go
@@ -6,14 +6,13 @@
"errors"
"fmt"
"io"
- "log"
"mime/multipart"
"net/http"
- "strings"
+ "github.com/kirinlabs/HttpRequest"
"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)
@@ -29,11 +28,13 @@
//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 {
- log.Fatal(err)
+ fmt.Println("UploadFile client.Do(request) err:", err)
return "", err
}
defer func() {
@@ -56,7 +57,7 @@
body := &bytes.Buffer{}
_, err := body.ReadFrom(resp.Body)
if err != nil {
- log.Fatal(err)
+ fmt.Println("UploadFile body.ReadForm(resp.Body) err:", err)
}
m := make(map[string]interface{})
@@ -64,12 +65,77 @@
return "", err
}
filePath := m["fileUrl"].(string)
- if strings.Contains(filePath,"/"){
- idx := strings.Index(filePath,"/")
- filePath = filePath[idx+1:]
- return filePath,nil
- } else {
- return "",errors.New("file upload error")
+ return filePath,nil
+ }
+}
+
+// 鑾峰緱涓�涓猣id
+
+func GetFid(url string)(weedPath string ,err error) {
+ res,err := HttpRequest.NewRequest().Post(url)
+ if err != nil {
+ fmt.Println("缃戠粶浼犺緭閿欒锛�")
+ }
+ var m map[string]interface{}
+ err = res.Json(&m)
+ if err != nil {
+ return "",err
+ }
+ return "http://"+m["url"].(string)+"/"+m["fid"].(string),err
+}
+
+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)
+ if err != nil {
+ return nil, err
+ }
+ boundary := writer.Boundary()
+ //close_string := fmt.Sprintf("\r\n--%s--\r\n", boundary)
+ close_buf := bytes.NewBufferString(fmt.Sprintf("\r\n--%s--\r\n", boundary))
+ file := bytes.NewBuffer(fileData)
+ request_reader := io.MultiReader(body, file, close_buf)
+ //_, err = io.Copy(part, file)
+ //writer.WriteField(key, val)
+ request, err := http.NewRequest("POST", uri, request_reader)
+ request.Header.Add("Content-Type", writer.FormDataContentType())
+ if timeout <= 0 {
+ timeout = time.Duration(5 * time.Second) //瓒呮椂鏃堕棿5s
+ }
+ client := &http.Client{Timeout: timeout}
+ resp, err := client.Do(request)
+ if err != nil {
+ fmt.Println("UploadFile client.Do(request) err:", err)
+ return nil, err
+ }
+ defer func() {
+ if r := recover(); r != nil {
+ fmt.Printf("panic鐨勫唴瀹�%v\n", r)
+ msg := "涓婁紶鍥剧墖鏈嶅姟鍣ㄥ紓甯�"
+ if _, ok := r.(error); ok {
+ msg = r.(error).Error()
+ fmt.Println("panic--recover()寰楀埌鐨勬槸error绫诲瀷")
+ }
+ if _, ok := r.(string); ok {
+ msg = r.(string)
+ fmt.Println("panic--recover()寰楀埌鐨勬槸string绫诲瀷")
+ }
+ err = errors.New(msg)
}
+ }()
+ defer resp.Body.Close()
+ {
+ body := &bytes.Buffer{}
+ _, err := body.ReadFrom(resp.Body)
+ if err != nil {
+ fmt.Println("UploadFile body.ReadForm(resp.Body) err:", err)
+ }
+
+ m := make(map[string]interface{})
+ if err := json.Unmarshal([]byte(body.String()), &m); err != nil {
+ return nil, err
+ }
+ return m,nil
}
}
\ No newline at end of file
--
Gitblit v1.8.0