所以我正在为我的家人制作一个网站,我们可以上传我们的图像并查看它们,但网站的一个重要特征是按日期排序,以便例如我的阿姨在我母亲的生日那天拍照我也拍了照片,然后上传了他们将被添加到同一张专辑中的图像等。
我意识到通过浏览器上传时无法保留日期。所以我将制作一个仅用于上传图片的小程序。我有一台FTP服务器正在运行,但是当我上传图像时,日期将更改为当前日期时间。 lprun
所以现在我正在寻找一种在上传到FTP时保留日期的方法。
以下是我的一些想法:
答案 0 :(得分:2)
- 也许我上传图片,然后从客户端更改上传的图片创建日期?
醇>
在FTP协议中,使用MFMT
或MDTM
命令更新文件修改时间戳,或使用MFCT
更新文件创建时间戳,具体取决于您的FTP服务器支持哪些。
实际上它们都没有标准化。
MFMT
和MFCT
:https://tools.ietf.org/html/draft-somers-ftp-mfxx-04 MDTM
,以使用MDTM filename
语法检索文件修改时间戳。但是许多FTP服务器支持替代(非标准)语法MDTM filename timestamp
(即与提议的MFMT
相同)以更新修改时间戳。虽然.NET框架中的本机FTP实现(FtpWebRequest
或WebClient
包装器)不支持其中任何一种。
您必须使用第三方库。
例如,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(@"d:\toupload\image.jpg", "/home/user/").Check();
}
有关详细信息,请参阅Session.PutFiles
。
最新版本的WinSCP GUI FTP客户端(5.9及更新版本)甚至可以generate the C# code for you。
(我是WinSCP的作者)