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
{
报错
}
------解决方案--------------------
if (File.PostedFile.ContentLength != 0)
{
File.PostedFile.SaveAs( "路径 ");
}
[解决办法]
你无法访问客户端的硬盘
这个安全方面考虑的.
[解决办法]
判断.ContentLength==0即可
HttpPostedFile userPostedFile = uploadedFiles[i];
if (userPostedFile.ContentLength!=0)
{
保存
}
else
{
报错
}
[解决办法]
哦,楼主是想判断客户端的文件是否存在吧?那么使用楼上的方法就可以
if (userPostedFile.ContentLength!=0)