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

展开原文

原文

我想将多部分文件直接导入到AWSS 3,而不是将其保存到磁盘中,并在我的golangRESTAPI中接收Multipart.FileHeader类型的文件。现在,我想将它流到AWSS 3中,使用 s3manager上传方法,在该方法中需要在body param中传递bytes.Reader。我看到了一个将文件上传到AWSS 3的 例子,它的编写方式是从磁盘中打开os.File类型的文件os.open(“filepath”),从中获取bytes.Reader并传递给AWSS 3。现在我正努力将这个多部分文件转换成os.file。

dongmu2026
dongmu2026 是的,我想要io.Reader
接近 4 年之前 回复
dongyi7513
dongyi7513 您是否需要*os.File或真正的io.Reader?该文件仅适用于物理上位于磁盘上的文件,但您也表示您不希望该文件位于磁盘上?
接近 4 年之前 回复
duanshaiduhao2471
duanshaiduhao2471 更新。做了一些实验。现在我需要将multipart.File转换为os.File
接近 4 年之前 回复

1个回答



调用 multipart.FileHeader </ code>上打开。 它将返回一个 multipart.File </ code>,它将为文件提供阅读器(将保存在内存中)。</ p>
</ div>

展开原文

原文

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).

dregduc63699
dregduc63699 我也有同样的问题。 您能否提供将文件转换为字节然后传递给bytes.NewReader()的确切代码?
一年多之前 回复
duannong1801
duannong1801 我成功了。 我将传入的文件数据转换为字节,然后传递给bytes.NewReader(),这给了我io.Reader。 感谢您的时间。 现在,我将根据您的想法优化代码。
接近 4 年之前 回复
dri8163
dri8163 如果要完全阻止文件访问磁盘,则有两个选择。 (1)将maxMemory设置为足够大的值,以使其可以将文件保存在内存中(您可以使用http包的其他部分来限制传入请求的大小)。 (2)使用* http.Request.MultiPartReader直接访问部件的。
接近 4 年之前 回复
dorflv5944
dorflv5944 如果确实需要* os.File,则需要在某个位置写入文件。 但是,没有理由真正需要* os.File。
接近 4 年之前 回复
dtz30833
dtz30833 如何避免写入磁盘(临时文件)并再次取走?
接近 4 年之前 回复
dongtiao2066
dongtiao2066 要多添加一些ParseMultipartForm,可以控制何时在内存中存储文件以及何时将文件写入temp。 从文档中:其文件部分的总计maxMemory字节存储在内存中,其余部分存储在磁盘上的临时文件中。
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐