VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 848|回复: 9

ASP.NET 如何判断硬盘中的某个文件是否存在

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-2 13:00:02 | 显示全部楼层 |阅读模式
使用自带的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......不知道这个方法有什么问题,或者还有别的更好的方法可以判断文件是否存在?请教高手!
回复

使用道具 举报

0

主题

23

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-3-20 12:30:01 | 显示全部楼层
给段代码自己看把
//获取控件中的文件名
                        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;
                        }
回复

使用道具 举报

0

主题

73

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-3-20 13:30:01 | 显示全部楼层
userPostedFile.FileName只是一个文件名,没有加上路径
回复

使用道具 举报

0

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-20 16:30:01 | 显示全部楼层
asp.net 下的上传控件里的文件名是客户端的文件,而非服务器端的文件,c#是运行在服务器端的你是无法据此判断文件是否存在
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-3-20 17:15:01 | 显示全部楼层
你是要判断要保存的文件是否存在,而不是原文件是否存在

string newPath = Server.Mappath("..*****");

if(!File.Exists(newPath))
{
    //保存。
}
回复

使用道具 举报

0

主题

73

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-3-20 19:00:01 | 显示全部楼层
userPostedFile.FileName只是客户端的一个文件名,没有加上路径
比如:
if (File.Exists("c:\\" +userPostedFile.FileName))//这里的c:\\换成你要上传到的目录
    {
        上传
    }
    else
    {
        报错
    }
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-20 23:00:01 | 显示全部楼层
if (File.PostedFile.ContentLength != 0)
{
File.PostedFile.SaveAs("路径");
}
回复

使用道具 举报

1

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-23 07:45:02 | 显示全部楼层
你无法访问客户端的硬盘


这个安全方面考虑的.
回复

使用道具 举报

0

主题

38

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-3-23 19:45:01 | 显示全部楼层
判断.ContentLength==0即可
    HttpPostedFile userPostedFile = uploadedFiles[i];
    if (userPostedFile.ContentLength!=0)
    {
        保存
    }
    else
    {
        报错
    }
回复

使用道具 举报

0

主题

73

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-3-23 21:45:01 | 显示全部楼层
哦,楼主是想判断客户端的文件是否存在吧?那么使用楼上的方法就可以
if (userPostedFile.ContentLength!=0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表