文章首发于:clawhub.club
一个一个整理,纯属技术学习与爱好,再次感谢大神:https://github.com/aimerforreimu/auxpi
注意:请善待!!!
5,Baidu
github上的那个接口已经废掉了,所以自己分析了半天百度识图,又在网上找了半天,找到了一个还不错的:https://api.uomg.com/doc-image.baidu.html
这个是他封装好的,可能哪一天就不能用了,免费的东西就是不会稳的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
func UploadToBaidu(img []byte, imgInfo string) string { body := new(bytes.Buffer) w := multipart.NewWriter(body) contentType := w.FormDataContentType() name := utils.GetFileNameByMimeType(imgInfo) file, _ := w.CreateFormFile("Filedata", name) _, _ = file.Write(img) _ = w.WriteField("file", "multipart") _ = w.Close() req, _ := http.NewRequest("POST", "https://api.uomg.com/api/image.baidu", body) req.Header.Set("Content-Type", contentType) resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() data, _ := ioutil.ReadAll(resp.Body) baidu := bed.BaiduResp{} err := json.Unmarshal([]byte(string(data)), &baidu) if err != nil { logging.AppLogger.Error("Upload To Baidu fail", zap.Error(err)) return "" } return string(baidu.ImgUrl) }
|
6,Qihoo
这个是360识图的口子,http://st.so.com/stu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| func UploadToQihoo(img []byte, imgInfo string, imgType string) string { url := "http://st.so.com/stu" name := utils.GetFileNameByMimeType(imgInfo)
file := &utils.FormFile{ Name: name, Key: "upload", Value: img, Type: imgType, } var header map[string]string data := utils.FormPost(file, url, header) var re = regexp.MustCompile(`(?m)data-imgkey="(.*)"`) imgKey := re.FindAllStringSubmatch(data, -1)[0][1] url = "https://ps.ssl.qhmsg.com/" + imgKey return url }
|
7,NetEasy
网易的口子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| func UploadToNetEasy(img []byte, imgInfo string, imgType string) string { url := "http://you.163.com/xhr/file/upload.json" name := utils.GetFileNameByMimeType(imgInfo)
file := &utils.FormFile{ Name: name, Key: "file", Value: img, Type: imgType, } var header map[string]string data := utils.FormPost(file, url, header) netEasy := bed.NetEasyResp{}
_ = json.Unmarshal([]byte(data), &netEasy) return netEasy.Data[0] }
|
8,Jd
京东的口子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| func UploadToJd(img []byte, imgInfo string, imgType string) string { url := "https://search.jd.com/image?op=upload" name := utils.GetFileNameByMimeType(imgInfo)
file := &utils.FormFile{ Name: name, Key: "file", Value: img, Type: imgType, } var header map[string]string data := utils.FormPost(file, url, header) var pre = regexp.MustCompile(`(?m)ERROR`)
if !pre.MatchString(data) { var re = regexp.MustCompile(`(?m)\("(.*)"\)`) imgFix := re.FindAllStringSubmatch(data, -1)[0][1] url = "https://img" + strconv.Itoa(rand.Intn(3)+11) + ".360buyimg.com/img/" + imgFix return url } else { return "" }
}
|
9,JueJin
掘金的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| func UploadToJueJin(img []byte, imgInfo string, imgType string) string { url := "https://cdn-ms.juejin.im/v1/upload?bucket=gold-user-assets" name := utils.GetFileNameByMimeType(imgInfo)
file := &utils.FormFile{ Name: name, Key: "file", Value: img, Type: imgType, } var header map[string]string data := utils.FormPost(file, url, header) juejin := bed.JueJinResp{} _ = json.Unmarshal([]byte(data), &juejin)
reJ, _ := juejin.D.(map[string]interface{}) urls, _ := reJ["url"].(map[string]interface{}) httpUrl, _ := urls["https"].(string) return httpUrl }
|
10,Ali
阿里的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| func UploadToAli(img []byte, imgInfo string, imgType string) string { url := "https://kfupload.alibaba.com/mupload" name := utils.GetFileNameByMimeType(imgInfo)
file := &utils.FormFile{ Name: name, Key: "file", Value: img, Type: imgType, } data := utils.AliFormPost(file, url) ali := bed.AliResp{} _ = json.Unmarshal([]byte(data), &ali) return ali.Url }
|