>백엔드 개발 >Golang >Golang을 사용하여 Telegram Bots에 파일을 보낼 때 \'잘못된 요청: 요청에 사진이 없습니다\' 오류를 수정하는 방법은 무엇입니까?

Golang을 사용하여 Telegram Bots에 파일을 보낼 때 \'잘못된 요청: 요청에 사진이 없습니다\' 오류를 수정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-02 16:01:02721검색

How to Fix the 'Bad Request: there is no photo in the request' Error When Sending Files to Telegram Bots with Golang?

텔레그램 봇 개발을 위해 Golang에서 POST 요청과 함께 파일 보내기

문제: 파일 업로드 중 '잘못된 요청: 요청에 사진이 없습니다' 오류 발생

POST 요청을 통해 텔레그램에 파일을 업로드하는 함수를 작성하려고 했을 때 "잘못된 요청: 요청에 사진이 없습니다."라는 오류가 발생했습니다. SendPostRequest 기능을 사용한 초기 접근 방식은 실패했습니다.

향상된 솔루션

철저한 연구 끝에 다음과 같은 개선된 솔루션이 발견되었습니다.

<code class="go">import (
    "bytes"
    "io"
    "mime/multipart"
    "net/http"
    "path/filepath"
)

// content is a struct which contains a file's name, its type and its data.
type content struct {
    fname string
    ftype string
    fdata []byte
}

func sendPostRequest(url string, files ...content) ([]byte, error) {
    var (
        buf = new(bytes.Buffer)
        w   = multipart.NewWriter(buf)
    )

    // Iterate over the files and add them as form fields
    for _, f := range files {
        part, err := w.CreateFormFile(f.ftype, filepath.Base(f.fname))
        if err != nil {
            return []byte{}, err
        }

        _, err = part.Write(f.fdata)
        if err != nil {
            return []byte{}, err
        }
    }

    // Close the multipart writer
    err := w.Close()
    if err != nil {
        return []byte{}, err
    }

    // Create a new POST request
    req, err := http.NewRequest("POST", url, buf)
    if err != nil {
        return []byte{}, err
    }

    // Set the Content-Type header
    req.Header.Add("Content-Type", w.FormDataContentType())

    // Create a new HTTP client
    client := &http.Client{}

    // Send the request
    res, err := client.Do(req)
    if err != nil {
        return []byte{}, err
    }

    // Close the response body
    defer res.Body.Close()

    // Read the response body
    cnt, err := io.ReadAll(res.Body)
    if err != nil {
        return []byte{}, err
    }

    return cnt, nil
}</code>

이 업데이트된 솔루션은 멀티파트 형식을 활용합니다. 문제를 해결하고 해당 파일이 요청에 존재하는지 확인하는 파일 전송용 데이터입니다.

위 내용은 Golang을 사용하여 Telegram Bots에 파일을 보낼 때 \'잘못된 요청: 요청에 사진이 없습니다\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.