上传到FTP后如何在文件中设置DateTimeStamp?

时间:2009-05-29 19:42:02

标签: c# ftp

我有一个将游戏数据文件部署到不同游戏控制台的应用程序。如果用户计算机和控制台上的匹配文件具有相同的大小和日期,则不得重新部署它们。

在Xbox上,这很容易实现,因为用于在控制台上传文件的XDK库允许我在上传的文件上设置日期以匹配用户计算机上的日期。

但是,在Ps3上,我使用在控制台上运行的FTP服务。我使用WebClient.UploadFileAsync将文件上传到控制台。但是,我无法弄清楚如何设置上传文件的日期时间戳,只留下文件大小以确定不安全的相同文件。

我想知道是否有办法通过WebClient界面设置文件的日期时间戳?

2 个答案:

答案 0 :(得分:2)

我认为你不能使用WebClient接口。

某些FTP服务器似乎实现了各种非标准FTP扩展命令,以支持文件上次修改时间的设置。我所知道的是:

  1. MDTM - 这是获取文件上次修改时间的标准命令(由GetDateTimestamp()使用)。某些服务器通过为命令指定timestamp参数来支持set操作。以及文件名。
  2. MFMT - 这是在IETF实验草案MFMT中定义的,用于标准化此操作并避免非标准使用上述MDTM命令。
  3. SITE UTIME
  4. 如果PS3上运行的FTP服务器支持任何这些扩展(检查FEAT命令的结果),那么在上传文件后,您可以使用简单的套接字FTP连接向服务器发出相应的命令。

答案 1 :(得分:-2)

WebClient将把ftp连接移交给FtpWebRequest。如果直接使用FtpWebRequest,则可以将FTP命令发送到服务器。支持的命令定义为WebRequestMethods.Ftp的字段。其中一个命令是GetDateTimestamp。

因此,如果手动构建FtpWebRequest(而不是通过WebClient)并发送GateDateTimestamp或ListDirectoryDe​​tails命令,则应该能够获取目标文件的时间戳。