在go中使用REST服务复制文件时,如何保留io.Reader的时间戳?

在go中使用REST服务复制文件时,如何保留io.Reader的时间戳?,rest,go,Rest,Go,我正在用Go编写一些处理不同文件的微服务 我想通过PUT方法将文件从一个服务(客户端)传输到另一个服务(服务器)。服务是有效的,但有一点不优雅。当我将文件写入服务器的文件系统时,我传输的文件将获得一个新的修改日期 目前,我在服务器上处理http.Request,如下所示: 确保服务器上有一个文件 将正文从请求复制到服务器io.copy(myfile,r.body) 当我这样做时,文件具有从现在开始的最后修改日期()。为了解决这个问题,我可以传输原始文件的时间戳,并通过io.Chtimes()

我正在用Go编写一些处理不同文件的微服务

我想通过PUT方法将文件从一个服务(客户端)传输到另一个服务(服务器)。服务是有效的,但有一点不优雅。当我将文件写入服务器的文件系统时,我传输的文件将获得一个新的修改日期

目前,我在服务器上处理
http.Request
,如下所示:

  • 确保服务器上有一个文件
  • 将正文从请求复制到服务器
    io.copy(myfile,r.body)
当我这样做时,文件具有从现在开始的最后修改日期()。为了解决这个问题,我可以传输原始文件的时间戳,并通过
io.Chtimes()
进行设置。但是request.Body实现了一个
io.ReadCloser
接口,因此我认为必须有一种更优雅的方式来实现将文件写入服务器。是否有一个函数,它接受保存文件时间戳的
io.Reader

如果没有,是否有针对此问题的REST服务解决方案?

IMHO,有修改时间数据是很有用的(至少在以后需要知道文件复制时的时间戳时,它可以为您服务)。我可能会考虑如何将遗留时间戳作为附加数据。可能是将其附加到文件并对其进行散列或类似操作。由您在文件上传输时间戳并设置所需的时间。http协议或“net/http”包中没有任何部分可以为您实现这一点,而
io.Reader
不是一个文件,也没有任何与之相关的时间戳。接口不是实现它的东西。