10

ユーザーが r.FormFile("file") を使用してファイルをアップロードすると、multipart.File、multipart.FileHeader、およびエラーが発生します。

私の質問は、アップロードされたファイルに関する情報、たとえばサイズ、画像の場合は寸法などを取得する方法です。

私は文字通りどこから始めればいいのかわからなかったので、どんな助けでも素晴らしいでしょう.

4

4 に答える 4

1

このタイプのテストで私が見つけたもう 1 つの非常に簡単な方法は、パッケージに関連する test_data ディレクトリにテスト アセットを配置することです。通常、テスト ファイル内で、*http.Request のインスタンスを作成するヘルパーを作成します。これにより、multipart.File でテーブル テストを非常に簡単に実行できます (簡潔にするために、エラー チェックは削除されています)。

func createMockRequest(pathToFile string) *http.Request {
    file, err := os.Open(pathToFile)
    if err != nil {
        return nil
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, err := writer.CreateFormFile("file", filepath.Base(pathToFile))
    if err != nil {
        return nil
    }
    _, _ = io.Copy(part, file)

    err = writer.Close()
    if err != nil {
        return nil
    }
    // the body is the only important data for creating a new request with the form data attached
    req, _ := http.NewRequest("POST", "", body)
    req.Header.Set("Content-Type", writer.FormDataContentType())
    return req
}
于 2019-09-18T02:05:46.017 に答える