日期:2014-05-20  浏览次数:20395 次

ASP.NET 2.0 如何判断硬盘中的某个文件是否存在
使用2.0自带的FileUpload控件,我希望在没有这个文件的时候进行错误处理。
我的代码类似这样:
HttpFileCollection   uploadedFiles   =   Request.Files;
for   (int   i   =   0;   i   <   uploadedFiles.Count;   i++)
{
        HttpPostedFile   userPostedFile   =   uploadedFiles[i];
        if   (File.Exists(userPostedFile.FileName))
        {
                上传
        }
        else
        {
                报错
        }
}
现在的问题是,在userPostedFile.FileName处可以得到文件的绝对路径,如: "C:\\Documents   and   Settings\\Admin\\桌面\\aaa.txt ",但是无论文件是否存在,在做判断时结果都是false......不知道这个方法有什么问题,或者还有别的更好的方法可以判断文件是否存在?请教高手!

------解决方案--------------------
给段代码自己看把
//获取控件中的文件名
string fileName=this.txtFile.PostedFile.FileName.Substring(this.txtFile.PostedFile.FileName.LastIndexOf( "\\ "));
//设置服务器路径文件夹和文件
string sFileName=Server.MapPath(Request.ApplicationPath)+ "\\fileFavorite "+fileName;

//获取文件的类型
string fileJudge=fileName.Substring(fileName.LastIndexOf( ". ")+1);
if(fileJudge.Equals( "pdf ")||fileJudge.Equals( "PDF ")||fileJudge.Equals( "xls ")||fileJudge.Equals( "XLS ")||
fileJudge.Equals( "doc ")||fileJudge.Equals( "DOC ")||fileJudge.Equals( "txt ")||fileJudge.Equals( "TXT ")||
fileJudge.Equals( "ppt ")||fileJudge.Equals( "PPT ")||fileJudge.Equals( "csv ")||fileJudge.Equals( "CSV "))
{
if(System.IO.File.Exists(Server.MapPath(Request.ApplicationPath)+ "\\fileFavorite "+fileName)==false)
{
try
{
string newFileName = this.newFileNameUrl(); //上传到服务器的新文件名

this.txtFile.PostedFile.SaveAs(Server.MapPath(Request.ApplicationPath)+ "\\fileFavorite "+ "\\ "+newFileName);
return true;
}
catch(Exception ex)
{
ex.GetType();
Response.Write( " <script> onload=function(){alert( '因网络原因上传失败! ');} </script> ");
return false;
}
}
else
{
Response.Write( " <script> onload=function(){alert( '文件已存在! ');} </script> ");
return false;
}
}
else
{
Response.Write( " <script> onload=function(){alert( '要上传的文件格式不正确! ');} </script> ");
return false;
}
------解决方案--------------------
userPostedFile.FileName只是一个文件名,没有加上路径
------解决方案--------------------
asp.net 下的上传控件里的文件名是客户端的文件,而非服务器端的文件,c#是运行在服务器端的你是无法据此判断文件是否存在

------解决方案--------------------
你是要判断要保存的文件是否存在,而不是原文件是否存在 string newPath = Server.Mappath( "..***** "); if(!File.Exists(newPath)) { //保存。 }
------解决方案--------------------
userPostedFile.FileName只是客户端的一个文件名,没有加上路径
比如:
if (File.Exists( "c:\\ " +userPostedFile.FileName))//这里的c:\\换成你要上传到的目录
{
上传
}
else
{
报错
}

------解决方案--------------------