>  기사  >  백엔드 개발  >  Go - 멀티파트 Part.Read의 올바른 사용법

Go - 멀티파트 Part.Read의 올바른 사용법

王林
王林앞으로
2024-02-09 08:18:271070검색

Go - 多部分 Part.Read 的正确用法

php 편집기 Xinyi는 오늘 Go 언어에서 다중 파트 Part.Read의 올바른 사용법을 소개합니다. HTTP 요청을 처리할 때 파일 업로드 처리와 같이 데이터의 여러 부분을 읽어야 하는 상황에 자주 직면합니다. Go 언어의 net/http 패키지는 여러 부분으로 구성된 데이터를 읽을 수 있는 Part.Read 메서드를 제공하지만 많은 개발자가 이를 사용할 때 몇 가지 문제에 직면하게 됩니다. 이 기사에서는 개발자가 여러 부분으로 구성된 데이터를 더 잘 처리하고 프로그램 안정성과 성능을 향상시키는 데 도움이 되는 Part.Read의 올바른 사용법을 자세히 설명합니다. 한 번 보자!

질문 내용

매우 큰 파일 업로드(>20GB)에 대해 http에서 읽는 데 도움이 되도록 multipart.part를 사용하려고 했습니다. 그래서 다음 코드를 작성했는데 잘 작동하는 것 같습니다.

으아악

그러나 가장 안쪽 for 루프에서는 eof를 확인하기 전에 part.read부터 읽어야 한다는 것을 알았습니다. 왜냐하면 이 작업을 미리 수행하고 중단하면 마지막 블록을 놓칠 것이라는 점을 알았기 때문입니다. 그러나 나는 사람들이 오류/eof를 확인하고 마지막 읽기를 사용하지 않고 break-ing을 확인하는 다른 많은 기사/게시물을 발견했습니다. multipart.part.read()를 잘못/안전하게 사용하고 있습니까?

Solution

multipart.part을 올바른 방법으로 사용하고 계십니다.

multipart.part go.dev/io#reader" rel="nofollow noreferrer">io.reader의 특정 구현입니다. 따라서 규칙을 따르고 io의 권장 사항을 따라야 합니다. reader 문서에서 인용:

호출자는 오류 오류를 고려하기 전에 항상 반환된 n > 0 바이트를 처리해야 합니다. 이를 통해 일부 바이트를 읽은 후 발생하는 I/O 오류와 허용되는 eof 동작을 올바르게 처리할 수 있습니다.

또한 이 예에서는 io.reader에서 os.file로 데이터를 복사한다는 점에 유의하세요. os.file 구현io.readerfrom 인터페이스이므로 file.readfrom() 메서드를 사용하여 데이터를 복사할 수 있습니다. p> 으아악

버퍼를 사용해야 하는 경우 io.copybuffer() 함수를 사용할 수 있습니다. 그러나 io.readerfrom 구현을 숨겨야 합니다. 그렇지 않으면 버퍼 를 사용하여 복사를 수행하지 않습니다. 예를 참조하세요: 1, 2, 3.

으아악

위 내용은 Go - 멀티파트 Part.Read의 올바른 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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