【问题标题】:Preserve image created date when uploading to FTP上传到 FTP 时保留图像创建日期
【发布时间】:2021-05-28 15:40:35
【问题描述】:

所以我正在为我的家人创建一个网站,我们可以在其中上传我们的图像并查看它们,但该网站的一个重要功能是按日期排序,以便例如当我的阿姨在我母亲的生日和我也拍了照片,我们上传它们将添加到同一个相册等的图像。

我意识到通过浏览器上传时无法保留日期。所以我会做一个只用于上传图片的小程序。我有一个 FTP 服务器正在运行,但是当我上传图像时,日期将更改为当前日期时间。 I have found the answer to why it does that 所以现在我正在寻找一种在上传到 FTP 时保留日期的方法。

以下是我的一些想法:

  1. 如果程序将文件添加到 zip 文件并上传该 zip 文件,它们将保留日期,但这意味着我必须在服务器上安装一些东西来解压 zip。
  2. 当图像上传时,程序会从原始图像中提取创建日期并将其添加到一个文本文件中,它也会上传,但这将再次需要服务器上的程序来更改上传的图像创建日期。李>
  3. 也许我上传了图片,然后从客户端更改了上传图片的创建日期?

【问题讨论】:

    标签: c# .net ftp


    【解决方案1】:
    1. 也许我上传了图片,然后从客户端更改了上传图片的创建日期?

    在 FTP 协议中,使用 MFMTMDTM 命令更新文件修改时间戳,或使用MFCT 更新文件创建时间戳,具体取决于您的 FTP 服务器支持哪一种。

    实际上没有一个是标准化的。


    尽管 .NET 框架中的本机 FTP 实现(FtpWebRequestWebClient 包装器)不支持任何这些。

    您必须使用第 3 方库。

    例如,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 的作者)

    【讨论】:

    • 太棒了 :) 感谢您的帮助,感谢您制作了如此出色的软件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2019-01-26
    • 2018-03-03
    • 2013-10-15
    相关资源
    最近更新 更多