如何将 *multipart.FileHeader 文件类型转换为 *os.File 在 golang 中。

huangapple go评论89阅读模式
英文:

How to convert *multipart.FileHeader file type to *os.File in golang

问题

我想直接将多部分文件流式传输到AWSS3,而不是首先保存文件到磁盘。在我的Golang REST API中接收到类型为multipart.FileHeader的文件。现在我想将其流式传输到AWSS3,使用s3manager上传方法,其中需要在body参数中传递bytes.Reader。我看到了一个将文件上传到AWSS3的示例,写的方式是从磁盘中打开一个类型为os.File的文件os.Open("filepath"),从中获取bytes.Reader并传递给AWSS3。现在我正在努力将这个multipart.FileHeader转换为os.File。

英文:

I want to stream multipart file directly to AWSS3 instead of saving file to disk at first. Receiving file of type *multipart.FileHeader in my golang REST API. Now I want to stream this to AWSS3, using s3manager upload method where it's required to pass *bytes.Reader in body param. I have seen an example of uploading file to AWSS3, written in a way that opening a file os.Open("filepath") of type *os.File from disk,getting *bytes.Reader out of it and passing to AWSS3. Now I am struggling to convert this *multipart.FileHeader to *os.File.

答案1

得分: 8

调用multipart.FileHeaderOpen方法。它将返回一个multipart.File,该对象将提供一个文件的读取器(该文件将保存在内存中)。

英文:

Call Open on the multipart.FileHeader. It will return a multipart.File which will provide a reader to the file (which will be held in memory).

答案2

得分: 0

如果你有一个multipart.File,那么你可以使用下面的解决方案:

file, ok := multipartFile.(*os.File)
if !ok {
    responseError(w, errors.New("无效的文件", errors.InvalidArguments))
    return
}
英文:

If you have multipart.File, then you can use next solution:

file, ok := multipartFile.(*os.File)
if !ok {
    responseError(w, errors.New("invalid file", errors.InvalidArguments))
    return
}

huangapple
  • 本文由 发表于 2016年12月4日 14:31:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/40956103.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定