ホームページ  >  記事  >  バックエンド開発  >  ディスクに保存せずにGoでmultipart.Partからmultipart.Fileを取得する方法は?

ディスクに保存せずにGoでmultipart.Partからmultipart.Fileを取得する方法は?

WBOY
WBOY転載
2024-02-08 22:03:09632ブラウズ

ディスクに保存せずにGoでmultipart.Partからmultipart.Fileを取得する方法は?

Go 言語の開発プロセス中、編集者 Apple は、multipart パッケージを使用してフォーム アップロード ファイルを処理するときに、multipart.Part オブジェクトから multipart.File を取得する必要性によく遭遇します。ただし、標準ライブラリの multipart パッケージは、multipart.File を取得するメソッドを直接提供しませんが、デフォルトでファイルをディスクに保存します。では、この制限を回避して、multipart.Part から直接 multipart.File を取得する方法はあるのでしょうか?次にGoでmultipart.Partからmultipart.Fileをディスクに保存せずに取得する方法を紹介します。

質問の内容

私の 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 を使用して、ファイルのバイトを読み取るか、ファイルをコピーします。 partio.Reader を実装しているため、ファイルのように読み取ることができることに注意してください。

以上がディスクに保存せずにGoでmultipart.Partからmultipart.Fileを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。