Skip to content

Instantly share code, notes, and snippets.

@codcodog
Created August 25, 2020 05:14

Revisions

  1. codcodog created this gist Aug 25, 2020.
    58 changes: 58 additions & 0 deletions uploadImage.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    // 上传图片
    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
    }