>  기사  >  백엔드 개발  >  Golang은 멀티파트를 사용하여 대용량 파일을 외부 API에 업로드합니다. `io.Copy(io.Writer, io.Reader)` 문제를 방지하는 방법

Golang은 멀티파트를 사용하여 대용량 파일을 외부 API에 업로드합니다. `io.Copy(io.Writer, io.Reader)` 문제를 방지하는 방법

PHPz
PHPz앞으로
2024-02-06 09:45:04926검색

Golang 使用多部分将大文件上传到外部 API。如何避免`io.Copy(io.Writer, io.Reader)`问题

질문 내용

내 목표는 golang에 내장된 net/http 패키지를 사용하여 POST https://somehost/media에 대용량 파일을 업로드하는 것입니다.

API 호출의 HTTP 형식

으아아아

golang에서는 이것이 코드입니다.

으아아아

io.Copy(io.Writer, io.Reader)문제

를 피하는 방법

위의 코드는 잘 작동하지만 _, errFile3 = io.Copy(part3, file) 줄에 있습니다. 이는 기본적으로 파일의 모든 내용을 주 메모리에 복사합니다.

이 상황을 피하는 방법은 무엇입니까?

multipart-formdata을 통해 대용량 파일을 API로 스트리밍할 수 있는 방법이 있나요?

프로그램은 원격 서버에서 실행됩니다. 매우 큰 파일을 열면 충돌이 발생할 수 있습니다.


정답


전체 파일을 메모리에 로드하지 않고 요청에 파일을 복사하려면 io.Pipe 및 goroutine을 사용하세요.

으아아아

위 내용은 Golang은 멀티파트를 사용하여 대용량 파일을 외부 API에 업로드합니다. `io.Copy(io.Writer, io.Reader)` 문제를 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

관련 기사

더보기