http.ServeFile 함수를 사용하여 지정된 파일을 HTTP 응답 본문으로 클라이언트에 보냅니다.
Go 언어에서는 http 패키지를 사용하여 HTTP 서버를 빠르게 구축할 수 있습니다. 그러나 때로는 로컬 파일을 HTTP 응답의 본문으로 클라이언트에 보내야 하는 경우도 있습니다. 이 기능을 달성하기 위해 http.ServeFile 함수를 사용할 수 있습니다.
http.ServeFile 함수는 ResponseWriter와 Request를 매개변수로 받아들이고 지정된 파일을 HTTP 응답의 본문으로 클라이언트에 보냅니다. 재개된 다운로드를 지원하기 위해 HTTP 요청의 Range 헤더를 자동으로 처리합니다.
다음은 http.ServeFile 함수를 사용하여 클라이언트에 로컬 파일을 보내는 방법을 보여주는 예입니다.
package main import ( "log" "net/http" ) func serveFile(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "./example.txt") } func main() { http.HandleFunc("/", serveFile) log.Fatal(http.ListenAndServe(":8080", nil)) }
이 예에서는 로컬 8080 포트를 수신하는 HTTP 서버를 만듭니다. HTTP 요청이 수신되면 ServeFile 함수를 호출하여 요청을 처리합니다. http.ServeFile 함수는 ServeFile 함수에서 "./example.txt" 파일을 클라이언트에 보내는 데 사용됩니다. 위의 예제 코드를 파일로 저장하고 로컬 "example.txt" 파일을 동일한 디렉터리에 저장하시기 바랍니다.
이 프로그램을 실행한 후 브라우저에서 http://localhost:8080에 접속하시면 브라우저가 "example.txt" 파일을 다운로드한 것을 보실 수 있습니다. HTTP 응답의 Content-Type 헤더는 파일 확장자에 따라 자동으로 설정되므로 파일 형식이 올바르게 식별됩니다.
http.ServeFile 함수는 클라이언트에 파일을 보낼 때 HTTP 요청의 Range 헤더를 자동으로 처리한다는 점에 유의해야 합니다. 클라이언트가 파일의 일부를 요청하는 경우(예: 다운로드를 다시 시작할 때) http.ServeFile 함수는 자동으로 해당 부분의 콘텐츠만 보냅니다. 이를 통해 전체 파일을 로드하지 않고도 대용량 파일을 여러 배치로 다운로드할 수 있습니다.
파일을 HTTP 응답 본문으로 클라이언트에 보내는 것 외에도 http.ServeFile 함수는 파일이 존재하지 않거나 파일 읽기 실패와 같은 비정상적인 상황을 자동으로 처리하고 해당 HTTP 오류 코드를 반환합니다. 따라서 이러한 상황을 수동으로 처리할 필요가 없으므로 매우 편리합니다.
요약:
Go 언어에서는 http.ServeFile 함수를 사용하여 로컬 파일을 HTTP 응답의 본문으로 클라이언트에 쉽게 보낼 수 있습니다. HTTP 요청의 Range 헤더를 자동으로 처리할 수 있을 뿐만 아니라 파일 존재하지 않음, 파일 읽기 실패 등의 예외도 처리할 수 있습니다. 이를 통해 우리는 완전한 기능을 갖춘 정적 파일 서버를 신속하게 구축할 수 있습니다.
위 내용은 의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!