如何获取上传文件的最后修改日期?

时间:2011-11-27 13:01:20

标签: javascript jquery asp.net xml file-upload

我上传一个XML文件以将其内容迁移到我的数据库,但我想首先存储该文件的最后修改日期,以确保该文件没有发生任何更改。

如何获取文件的上次修改日期?

有没有任何javascript函数可以做到这一点?

2 个答案:

答案 0 :(得分:3)

使用文件输入上传文件时,此信息永远不会发送到服务器。只有文件名,mime类型和内容与multipart/form-data一起发送。在上传之前,您可以使用HTML5 File API从文件中获取此信息。


根据评论部分的要求,这是一个ASP.NET页面的示例,该页面具有上传控件和隐藏字段,用于使用HTML5文件API将文件最后修改日期存储并发送到服务器:< / p>

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Globalization" %>

<script type="text/C#" runat="server">
    protected void BtnUploadClick(object sender, EventArgs e)
    {
        var file = Request.Files[0];
        DateTime date;
        if (DateTime.TryParseExact(lastModifiedDate.Value, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
        {
            // you could use the date here
        }
    }
</script>

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form id="Form1" runat="server">
        <label for="up">Pick a file</label>
        <asp:FileUpload ID="up" runat="server" />
        <asp:HiddenField ID="lastModifiedDate" runat="server" />
        <asp:LinkButton ID="btnUpload" runat="server" Text="Upload" OnClick="BtnUploadClick" />
    </form>

    <script type="text/javascript">
        if (!window.File) {
            alert('Sorry, your browser doesn\'t support the File API so last modified date will not be available');
        } else {
            document.getElementById('<%= up.ClientID %>').onchange = function () {
                if (this.files.length > 0) {
                    if (typeof this.files[0].lastModifiedDate === 'undefined') {
                        alert('Sorry, your browser doesn\'t support the lastModifiedDate property so last modified date will not be available');
                    } else {
                        var lmDate = this.files[0].lastModifiedDate;
                        var hidden = document.getElementById('<%= lastModifiedDate.ClientID %>');
                        hidden.value = lmDate.getFullYear() + '-' + (lmDate.getMonth() + 1) + '-' + lmDate.getDate();
                    }
                }
            };
        }
    </script>
</body>
</html>

因此,在此示例中,我们订阅文件输入的onchange事件,如果客户端浏览器支持HTML5文件API,我们可以获取有关所选文件的信息,例如其名称,大小,上次修改日期,。 ..在此示例中,我们将上次修改日期存储到隐藏字段中,以便在我们上传文件后在服务器上提供此信息。

答案 1 :(得分:0)

System.IO.FileInfo对象应该产生LastWriteTime属性

FileInfo myFileInfo= new FileInfo(path) ;
myFileInfo.Refresh();
string t = myFileInfo.LastWriteTime.ToString("F")