rest - 使用 golang 通过 rest 端点将文件从客户端复制到服务器

标签 rest go

我想通过服务器暴露的rest端点将文件从客户端复制到服务器。我引用了stackoverflow中的各种问题和答案,但我看不清楚。

我只想要一个 golang 中的示例客户端和服务器代码,用于从客户端复制文件并将其保存在服务器上。

提前致谢。

最佳答案

方向:服务器到客户端

所以——双方都在围棋?好的,让我们从服务器端开始。看我的WebLoad.go来 self 的文件 CSVStorageServer服务器:(Link to Github)

在第 17 行,我定义了 Web 服务器的处理程序。此方法将按需构建一个 zip 文件并将其发送到浏览器。关于您的问题的重要部分是第 77 行到第 82 行。在这里,我为客户端设置标题,例如内容长度和类型。第 82 行将整个数据发送到客户端。它将字节从按需 zip 文件复制到网络。

在客户端,您触发例如一个GET请求并存储结果。这里有一个例子:https://golang.org/pkg/net/http/#example_Get

http.Get(...你触发了 GET要求。与 ioutil.ReadAll(res.Body)您从服务器读取所有字节并将其存储到变量中。之后,您可以将字节写入磁盘或在内存中处理它。

希望这个回答能帮到你。

最好的问候,托尔斯滕

编辑 #1: 关于 REST 端点,请参见。服务器定义 ( link to Github )。第 16 行定义了此处理程序的 REST 端点。在这种情况下,它作为 /load 可用。 .您可以在此处使用任何类似 REST 的路径,例如/open/file/USERID/send

方向:客户端到服务器

为了将文件从客户端复制到服务器端,类似的操作是必要的。在客户端,一个 POST请求是必要的 multipart/form-data .这是一个很好的例子:Link to a blog post .此示例还考虑了服务器部分。相关的客户端部分是函数 func postFile(filename string, targetUrl string) error { ... } .

对于服务器部分,这里有一个自己的例子:Link to Github .此示例从客户端接收文件并将其写入 MongoDB 数据库。相关部分是:

第39行从客户端读取文件:file, fileHeader, fileError := request.FormFile("file")结果是此上传文件的句柄。

第 60 行将所有字节从源(浏览器或 Go 客户端)复制到目标(这里是 MongoDB):_, errCopy := io.Copy(newFile, file) .

编辑#2:

这是一个完整的工作示例:https://github.com/SommerEngineering/Example010客户端和服务器在同一个程序中。将它分成两个程序应该很容易。

关于rest - 使用 golang 通过 rest 端点将文件从客户端复制到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44173461/

相关文章:

android - Delphi XE5 发布版本的 Android 应用程序 -- 禁用互联网

json - 查询 API 时,我在传递给 "Assertion failed: You must include an ` 的哈希中得到 `push` id`

java - Spring Data Rest @RepositoryRestController 和 @RequestMapping

java - 405 遗留应用程序中的第一个 REST API 不允许使用方法

go - 未加载时如何忽略JSON输出中的关联字段?

go - ssh 客户端显示服务器支持的算法

Node.js 作为网关

go - goroutines中的请求时间

go - 如何在Go中为外部HTML模板设置变量?

go - 将 map 作为值传递到 Cassandra 中