Загруженный файл неверен при использовании загрузчика s3manage (более 5 ГБ) - PullRequest
0 голосов
/ 17 февраля 2020

Версия AWS SDK для Go?

последняя

Версия Go (go version)?

go1.13.1

Какую проблему вы видели?

Используйте s3manage для загрузки большого файла ( более 5 ГБ ), он может быть успешно загружен и байтов из S3 файл и локальный файл совпадают, , но сумма MD5 и количество строк различаются

Шаги для воспроизведения

file,_ := os.Open(fileName)
defer file.Close()
fileInfo, _ := file.Stat()
size := fileInfo.Size()
buffer := make([]byte, size)
_, _ = file.Read(buffer)
fileBytes := bytes.NewReader(buffer)
fileType := http.DetectContentType(buffer)
    client := s3.New(sess)
uploader := s3manager.NewUploaderWithClient(client, func(u *s3manager.Uploader) {
    u.PartSize = 10 * 1024 * 1024 // 10MB part size
    u.Concurrency = 5
})
resp, err := uploader.Upload(&s3manager.UploadInput{
    Bucket: aws.String(bucket),
    Key: aws.String(key),
    Body: fileBytes,
    ContentType:  aws.String(fileType),
})
fmt.Println(resp)
if err != nil {
    fmt.Println(err)
    return
}

Загруженный файл представляет собой текстовый файл с следующее содержание как это:

00003df9-92f5-441e-9709-9a83a8f0e6a9    12      package  5727
00004a35-f154-4da8-9b21-84860ee07019    12     package  5727
...
...