>백엔드 개발 >Golang >net/http를 사용하여 Go에서 업로드된 파일을 수신하고 처리하는 방법은 무엇입니까?

net/http를 사용하여 Go에서 업로드된 파일을 수신하고 처리하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-12 16:43:10315검색

How to Receive and Process Uploaded Files in Go using net/http?

Golang 및 net/http를 사용하여 업로드된 파일 수신

HTTP 서버로 작업할 때 파일 업로드를 처리하는 것이 일반적입니다. Go에서는 net/http 패키지를 사용하여 업로드된 파일을 수신하고 처리하도록 엔드포인트를 설정할 수 있습니다.

다음 코드 조각을 고려하세요.

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func main() {
...
    // Assuming you already have a router setup, add the following:
    router.
        Path("/upload").
        Methods("POST").
        HandlerFunc(uploadFile)
...
}

uploadFile 함수 내부에는 다음이 필요합니다. 요청에서 업로드된 파일을 구문 분석하려면:

func uploadFile(w http.ResponseWriter, r *http.Request) {
    err := r.ParseMultipartForm(5 * 1024 * 1024)
    if err != nil {
        panic(err)
    }
    // Get the file from the form
    file, header, err := r.FormFile("file")
    if err != nil {
        panic(err)
    }
...
}

파일 객체는 업로드된 파일을 나타내고 헤더는 다음과 같은 파일에 대한 정보를 제공합니다. 파일 이름과 크기로. 그런 다음 필요에 따라 파일 콘텐츠로 작업할 수 있습니다.

예를 들어 파일을 디스크에 저장할 수 있습니다.

    f, err := os.Create(header.Filename)
    if err != nil {
        log.Fatal(err)
    }
    defer f.Close()
    if _, err := io.Copy(f, file); err != nil {
        log.Fatal(err)
    }
...

또는 파일 콘텐츠를 직접 처리할 수도 있습니다.

    defer file.Close()
    data, err := ioutil.ReadAll(file)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(data))
...

이런 방법으로 Go의 net/http 패키지를 사용하여 업로드된 파일을 받고 처리할 수 있습니다.

위 내용은 net/http를 사용하여 Go에서 업로드된 파일을 수신하고 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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