Skip to content

Instantly share code, notes, and snippets.

@codcodog
Created August 25, 2020 05:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codcodog/9bf2a3cfe2c19a45b9340eaff2e295aa to your computer and use it in GitHub Desktop.
Save codcodog/9bf2a3cfe2c19a45b9340eaff2e295aa to your computer and use it in GitHub Desktop.
golang 上传图片
// 上传图片
func UploadImage(websiteID uint64, name string, file io.Reader, uploadCdn bool) (uint64, string, error) {
url, err := getImageUrl()
if err != nil {
return 0, "", err
}
var isLocal uint64
if uploadCdn {
isLocal = 0
} else {
isLocal = 1
}
body := new(bytes.Buffer)
writer := multipart.NewWriter(body)
formFile, err := writer.CreateFormFile("file", name)
if err != nil {
return 0, "", err
}
_, err = io.Copy(formFile, file)
if err != nil {
return 0, "", err
}
writer.WriteField("is_local", fmt.Sprintf("%d", isLocal))
writer.WriteField("website_id", fmt.Sprintf("%d", websiteID))
err = writer.Close()
if err != nil {
return 0, "", err
}
req, err := http.NewRequest("POST", url, body)
if err != nil {
return 0, "", err
}
req.Header.Set("Content-Type", writer.FormDataContentType())
client, err := getHttpClient()
if err != nil {
return 0, "", err
}
var result FileResp
err = client.Do(context.TODO(), req, &result)
fmt.Println(result)
if err != nil {
return 0, "", err
}
if result.Status != 200 {
return 0, "", errors.New(fmt.Sprintf("请求接口错误:%s", result.Message))
}
return result.Data.FileId, result.Data.Src, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment