如何在ASP.Net中检索上传文件的“上次修改日期”

时间:2011-03-03 12:41:12

标签: c# asp.net

我正在开发一个网站,其中客户端上传一些文档文件,如doc,docx,htm,html,txt,pdf等。我想检索上传文件的上次修改日期。我创建了一个处理程序(.ashx)来完成保存文件的工作。

Following is the code:
HttpPostedFile file = context.Request.Files[i];                                 
string fileName = file.FileName;                               
file.SaveAs(Path.Combine(uploadPath, filename));

正如您所看到的,使用file.SaveAs()方法保存文件非常简单。但是这个HttpPostedFile类没有暴露任何属性来检索文件的最后修改日期。

那么有人可以告诉我如何在将文件保存到硬盘之前检索文件的最后修改日期吗?

5 个答案:

答案 0 :(得分:8)

你不能这样做。 HTTP发布请求不包含有关上传文件的此信息。

答案 1 :(得分:8)

今天,您可以使用HTML5 api

从客户端访问此信息
//fileInput is a HTMLInputElement: <input type="file" multiple id="myfileinput"> 
var fileInput = document.getElementById("myfileinput");
// files is a FileList object (simliar to NodeList) 
var files = fileInput.files;
for (var i = 0; i < files.length; i++) {
    alert(files[i].name + " has a last modified date of " + files[i].lastModifiedDate);
}

Source and more information

答案 2 :(得分:6)

劳,

您只能在服务器上获取日期。如果您对此感到满意,请尝试:

string strLastModified = 
    System.IO.File.GetLastWriteTime(Server.MapPath("myFile.txt")).ToString("D");

进一步需要注意的是,此日期时间将是保存在服务器上的日期,而不是原始文件的日期时间。

答案 3 :(得分:3)

在将文件保存到磁盘之前,这是不可能的。

答案 4 :(得分:0)

您通常无法获取上次修改日期,因为日期未存储在文件中。

操作系统实际上存储了Created,Accessed和Last Modified等文件属性。见Where are “last modified date” and “last accessed date” saved?

(我之所以这么说,通常是因为像图片这样的某些文件类型可能会有EXIF个标记数据,例如拍摄照片的日期/时间。)