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

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

PHPz
풀어 주다: 2024-02-06 09:45:04
앞으로
983명이 탐색했습니다.

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿