ホームページ >バックエンド開発 >Golang >gin を使用する場合、1 つのプロセスで異なるサーバーにファイルを送信するにはどうすればよいですか?

gin を使用する場合、1 つのプロセスで異なるサーバーにファイルを送信するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-06 08:00:061070ブラウズ

使用 gin 时如何将文件发送到一个进程中的不同服务器?

質問の内容

POST リクエストを作成し、それを別のサーバーに送信することでこれを実行しようとしています。私のプロセスでは、3 つの POST を送信しようとしています。1 つは最初のサーバーに、残りは別のサーバーに送信されます。 p>

ただし、これは 最初の POST リクエストに対してのみ機能し、残りのリクエストは 200 コードを取得しますが、ファイルはまだ空です。 http 接続に詳しくありません。プログラムを修正するにはどうすればよいですか? ご協力いただければ幸いです。

ファイルを受信する機能です。

リーリー

これはリクエストを作成して送信する関数です

リーリー

動作しない機能もあります

func ReceivePublicKey() *gin.Engine {
    router := gin.Default()
    router.MaxMultipartMemory = 8 << 20
    //router.Static("/", "./static")
    router.POST("/receive", func(context *gin.Context) {
        file, _ := context.FormFile("file")
        log.Println(file.Filename)
        dst := "./" + file.Filename
        context.SaveUploadedFile(file, dst)
        context.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
        context.String(200, "server: receive publicKey successfully!")
    })
    return router
}

正解


さて、間違いが見つかりました。 まず、ファイルのサイズをチェックしませんでした。これが、空のファイルを保存するときにコード 200 を取得した理由の説明になります。 2 つ目は、IotInit() で userId を取得します。io.Copy() を使用し、ファイル ポインタが end of file を指すようにしました。これが、「public.pem」が空である理由を説明しています。コピーされたものは何も入れていません。リクエストボディに。また、POST リクエストの作成時に io.Copy() を使用していますが、「private.pem」も空である可能性があります。

以上がgin を使用する場合、1 つのプロセスで異なるサーバーにファイルを送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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