客户端发送文件,大小可能超过5G,到从属服务器,而不是从服务器发送到主服务器。
奴隶会将临时文件保存到自身吗?我不希望它发生,因为它会降低上传速度并浪费奴隶的记忆。
有什么方法可以避免这种情况吗?在golang中传输大文件的最佳方法是什么?
答案 0 :(得分:5)
是的,有一种避免存储转发方法的标准方法:一旦客户端连接从服务器,后者应该打开与主服务器的连接,然后只需 stream 来自客户的数据。通常,这是使用io.Copy()
函数完成的。感谢Go使用接口优秀的鸭子打字,这适用于TCP连接和HTTP请求/响应。
(为了获得更好的解释,你必须缩小你的问题。)
解决方案的一部分甚至出现在stackoverflow建议的类似问题中 - here it is。