老同志遇到新问题:
假设某机器上有一文件,创建日期为2004-1-1.现在需要将该文件在ASP.NET中上传至服务器上某文件夹下,在上传过程中,要求获取此文件的创建日期(2004-1-1),请问该如何获取?(通过服务端获取,不能通过客户端) 一般来说,通过上传对象的SaveAs将文件存储至服务器硬盘之后,该文件的创建日期/修改日期/访问日期等信息会重新建立,而在此之前的信息将会丢失.
假设某机器上有一文件,创建日期为2004-1-1.现在需要将该文件在ASP.NET中上传至服务器上某文件夹下,在上传过程中,要求获取此文件的创建日期(2004-1-1),请问该如何获取?(通过服务端获取,不能通过客户端) 一般来说,通过上传对象的SaveAs将文件存储至服务器硬盘之后,该文件的创建日期/修改日期/访问日期等信息会重新建立,而在此之前的信息将会丢失.
解决方案 »
- 关于Response.Write和Response.Redirect
- IDataReader 所出现的怪事,不明白啊!!!!!!
- 如何获取修改之后的x
- MVC查询显示?
- 求助:如何向DataView中添加一行数据
- 50分求实际项目的源码免费下载网址
- 让状态栏闪烁。
- 关于showModalDialog的问题,父页面怎样实现不刷新,慕白兄下班时间有空来看看:)
- 请问如何把{20,25,40,11,8,55}数组进行排序?小弟面试时忘了如何答了
- 问一下换行的问题
- 动态页面标题(title)如何实现 就是浏览器上面的标题 例如(CSDN_专家门诊_发表新帖子)
- DataGrid分页错误,是否少了什么命名空间?
<HEAD>
<SCRIPT>
function getFileTime (fileName) {
if (document.layers) {
if (navigator.javaEnabled()) {
var file = new java.io.File(fileName);
if (location.protocol.toLowerCase() != 'file:')
netscape.security.PrivilegeManager.enablePrivilege('UniversalFileRead');
return file.length();
}
else return -1;
}
else if (document.all) {
window.oldOnError = window.onerror;
window.onerror = function (err) {
if (err.indexOf('utomation') != -1) {
alert('不能访问文件');
return true;
}
else
return false;
};
var fso = new ActiveXObject('Scripting.FileSystemObject');
var file = fso.GetFile(fileName);
window.onerror = window.oldOnError;
return file.DateCreated;
}
}
</SCRIPT></HEAD>
<BODY>
<FORM NAME="formName">
<INPUT TYPE="file" NAME="fileName">
<BR>
<INPUT TYPE="button" VALUE="检测日期" ONCLICK="alert(getFileTime(this.form.fileName.value))">
</FORM>
</BODY>
</HTML>
如果可以的话,你用控件写,否则不行的!
public static string GetFileCreateDataeTime(string FilePath)
{
if (File.Exists(FilePath) == false) return ""; DirectoryInfo mDirectoryInfo = new DirectoryInfo(FilePath); string strCreateDateTime=""; strCreateDateTime=mDirectoryInfo.CreationTime.ToLongDateString(); //***返回文件最早创建时间
return strCreateDateTime;
}
孟子提出的以脚本来获取被上传文件的创建时间,可行,但美中不足的是会在客户端弹出提示框,而且如果没有设置为信任站点恐怕还不行.
其他的朋友,罗列了一些服务端取文件创建时间的方法,但由于文件上传之后,所有的创建信息都重新创建了,这些方法不可取.
我想,一个文件的创建,它的创建信息肯定储存在该文件的内部,不会因为转移到某些地方而改变,比如在A的机器上创建一个文件,再使用拷贝的方式将它放到B的机器上,它的创建时间仍然是A机器上的创建时间.
既然创建时间信息存储在文件内部,那么,当此文件上传的时候,它肯定是包含了完整的信息,只不过,在保存到服务器硬盘上的时候,这些信息被清空了.但如果能够通过某种方法,在保存到服务器硬盘上之前,通过它的InputStream流,来读取原来的创建信息,可能是一个可行的办法.
----------------
但是,从一台分区为FAT的机器上,拷贝一个文件到NTFS分区的主机上,原始的创建时间仍然存在.
退一步说,通常我们上传的主机,它仍然是WINDOWS系统,甚至还是相同分区格式的.
如果文件创建信息不存在于文件本身,在文件转移的过程中,怎么可能还存在原来的创建信息呢?而它事实上确实存在,并不会因为复制或移动而消失.所以我认为它是存在于文件内部的.
同理,我们上传一个文件,是把整个文件信息都上传上去,所以我认为在未保存前,这些信息仍然存在,只不过是如何读取出来罢了.