>  기사  >  백엔드 개발  >  디스크에 저장하지 않고 Go의 multipart.Part에서 multipart.File을 얻는 방법은 무엇입니까?

디스크에 저장하지 않고 Go의 multipart.Part에서 multipart.File을 얻는 방법은 무엇입니까?

WBOY
WBOY앞으로
2024-02-08 22:03:09634검색

디스크에 저장하지 않고 Go의 multipart.Part에서 multipart.File을 얻는 방법은 무엇입니까?

Go 언어 개발 과정에서 Apple 편집자 Apple은 양식 업로드 파일을 처리하기 위해 multipart 패키지를 사용할 때 multipart.Part 개체에서 multipart.File을 가져와야 하는 경우가 종종 있습니다. 그러나 표준 라이브러리의 멀티파트 패키지는 multipart.File을 얻는 방법을 직접 제공하지 않고 기본적으로 파일을 디스크에 저장합니다. 그렇다면 이 제한을 우회하고 multipart.Part에서 직접 multipart.File을 가져올 수 있는 방법이 있습니까? 다음으로 디스크에 저장하지 않고 Go에서 multipart.Part로부터 multipart.File을 얻는 방법을 소개하겠습니다.

질문 내용

my go API에는 아래와 같이 r.Body 中提取 multipart.File에서 전달하여 잘 작동하던 함수가 있습니다

으아악

저는 multipart.File를 사용하여 아래와 같이 minio 클라이언트를 사용하여 s3 API에 업로드합니다

으아악

이제 추가 양식 데이터를 추가했으므로 더 이상 r.Body를 사용하여 이 작업을 수행할 수 없는 것 같습니다. 아래 코드에 표시된 것처럼 "양식 파일을 검색하는 중 오류가 발생했습니다"라는 메시지가 나타납니다.

이 질문을 바탕으로 multipart.Part에서 양식 데이터를 가져오기 위해 MultipartReader를 구현했습니다.

부분에는 multipart.File이 없으므로 가능하면 디스크에 쓰고 다시 읽지 않고 해당 부분을 구현해야 합니다.

이것은 내 코드입니다

file, handler, err := r.FormFile("file")

해결 방법

이미 양식의 일부를 스트리밍하고 있으므로 지금은 FormFile,您必须自己读取该文件。使用 part.Read 读取文件的字节,或者复制文件等。请注意,part 实现了 io.Reader에 전화할 수 없으므로 파일처럼 읽을 수 있습니다.

위 내용은 디스크에 저장하지 않고 Go의 multipart.Part에서 multipart.File을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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