LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】.NET FTP 上传文件并保留原始日期时间

admin
2024年1月26日 13:21 本文热度 494

我们有一个 Windows 2008 R2 Web 服务器,带有基于 SSL 的 FTP。此应用程序使用 .NET 4.5,当我上传文件时,文件上的日期/时间将更改为服务器上的当前日期/时间。有没有办法让上传的文件保留原始(最后修改)日期?

这是我所拥有的:

FtpWebRequest clsRequest = (FtpWebRequest)WebRequest.Create(FTPFilePath);

clsRequest.EnableSsl = true;

clsRequest.UsePassive = true;

clsRequest.Credentials = new NetworkCredential(swwwFTPUser, swwwFTPPassword);

clsRequest.Method = WebRequestMethods.Ftp.UploadFile;

Byte[] bFile = File.ReadAllBytes(LocalFilePath);

Stream clsStream = clsRequest.GetRequestStream();

clsStream.Write(bFile, 0, bFile.Length);

clsStream.Close();

clsStream.Dispose();

clsRequest = null;

最佳答案

确实没有标准方法可以通过 FTP 协议(protocol)更新远程文件的时间戳。这可能就是 FtpWebRequest 不支持它的原因。

有两种非标准方法可以更新时间戳。非标准 MFMT 命令:

MFMT yyyymmddhhmmss path

或非标准使用(其他标准)MDTM 命令:

MDTM yyyymmddhhmmss path

但是 FtpWebRequest 也不允许您发送自定义命令。

例如参见 How to send arbitrary FTP commands in C# .


所以你必须使用第三方 FTP 库。

例如WinSCP .NET assembly默认情况下保留上传文件的时间戳。

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Ftp,
    HostName = "example.com",
    UserName = "user",
    Password = "mypassword",
};
using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);    // Upload
    session.PutFiles(@"c:\toupload\file.txt*", "/home/user/").Check();
}

参见a full example .

请注意,WinSCP .NET 程序集不是 native .NET 程序集。它是一个围绕控制台应用程序的薄 .NET 包装器。

(我是 WinSCP 的作者)


关于c# - .NET FTP 上传文件并保留原始日期时间,我们在Stack Overflow上找到一个类似的问题: 

https://stackoverflow.com/questions/35026243/


该文章在 2024/1/26 23:29:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved