英文:
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.FileHeader
的Open方法。它将返回一个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
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论