V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  MarkMelon  ›  全部回复第 1 页 / 共 1 页
回复总数  6
2021-01-25 15:44:48 +08:00
回复了 MarkMelon 创建的主题 问与答 求助: gin 大文件上传
@zu1k 这个 ubuntu18 htop 实测内存会不断增大, ubuntu16.04 内存不增大,swap 增大

后来发现 ubuntu18 和 ubuntu16 htop 统计方式变了。。。。

最好的方式 还是我给的这种
2021-01-25 15:43:15 +08:00
回复了 MarkMelon 创建的主题 问与答 求助: gin 大文件上传
partReader, err := ctx.Request.MultipartReader()
if err != nil {
this.logger.WithError(err).Error("UploadChunk invalid http body.")
result.ErrorCode = this.getErrorCodes().ParamError
return
}
for {
part, err := partReader.NextPart()
if part == nil && err == io.EOF {
break
}
if err != nil && err != io.EOF {
this.logger.Error("read body failed, err: ", err)
if err = os.Remove(chunkPath); err != nil {
this.logger.Error("read body failed remove chunk file failed, err: ", err)
}
result.ErrorCode = this.getErrorCodes().ChunkReadError
return
}
if part.FileName() != "" {
// 从 http 流中循环读取并写到文件中
_, err := io.CopyBuffer(file, part, buf)
// _, err := io.CopyBuffer(file, ctx.Request.Body, buf) // 直接解析 http body, 读取 binary 数据,body 中只包含文件内容
if err != nil {
this.logger.Error("write data from part to file failed, err: ", err)
if err = os.Remove(chunkPath); err != nil {
this.logger.Error("write data from part to file failed and remove chunk file failed, err: ", err)
}
result.ErrorCode = this.getErrorCodes().ChunkWriteError
return
}
}
}
2021-01-20 10:34:21 +08:00
回复了 MarkMelon 创建的主题 问与答 求助: gin 大文件上传
跪谢大家的回复 @Jirajine 这个可能是最优解 也是我想要的, 现在就是找一些比较标准的解析方案
2021-01-19 19:37:59 +08:00
回复了 MarkMelon 创建的主题 问与答 求助: gin 大文件上传
@shoaly 这种可能违背了需求本身了
2021-01-19 19:37:24 +08:00
回复了 MarkMelon 创建的主题 问与答 求助: gin 大文件上传
@Jirajine 主要是如何在读流的过程中解析参数
2021-01-19 19:08:05 +08:00
回复了 MarkMelon 创建的主题 问与答 求助: gin 大文件上传
@shoaly 首先感谢。 我们现在已经让前端把大文件拆成小文件上传了。
现在要解决的是, 流式读取 body 并保存到文件中。 比如每次从网卡里读 4k 这样的。
但是 body 里 form/data 会有分隔符还有其他参数。 如何在流式读取过程中把文件和这些参数区分开
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5729 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 03:25 · PVG 11:25 · LAX 19:25 · JFK 22:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.