猿问

Golang 将 Http 请求 FormFile 上传到 Amazon S3

我正在创建一个微服务来处理一些附件上传到 Amazon S3,我想要实现的是接受一个文件,然后将它直接存储到我的 Amazon S3 存储桶,我当前的功能:


func upload_handler(w http.ResponseWriter, r *http.Request) {

  file, header, err := r.FormFile("attachment")


  if err != nil {

    fmt.Fprintln(w, err)

    return

  }


  defer file.Close()


  fileSize, err := file.Seek(0, 2) //2 = from end

    if err != nil {

         panic(err)

    }


    fmt.Println("File size : ", fileSize)


  bytes := make([]byte, fileSize)

  // read into buffer

  buffer := bufio.NewReader(file)

  _, err = buffer.Read(bytes)


  auth := aws.Auth{

        AccessKey: "XXXXXXXXXXX",

        SecretKey: "SECRET_KEY_HERE",

  }

  client := s3.New(auth, aws.EUWest)

  bucket := client.Bucket("attachments")


  err = bucket.Put(header.Filename, bytes, header.Header.Get("Content-Type"), s3.ACL("public-read"))


  if err != nil {

    fmt.Println(err)

    os.Exit(1)

  }

}

问题是存储在S3中的文件都被损坏了,经过一个小的验证,似乎文件payload不是作为字节读取的


如何将文件转换为字节并将其正确存储到 S3 ?


慕沐林林
浏览 278回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答