[英]Check if a file exists on the server
我正在尝试使用我的 ASP.NET web 页面后面的 C# 代码检查服务器上是否存在文件。 我知道该文件确实存在,因为我事先将它放在一段代码中的服务器上。 谁能看到为什么找不到文件。 这是代码:
wordDocName = "~/specifications/" + Convert.ToInt32(ViewState["projectSelected"]) + ".doc";
ViewState["wordDocName"] = wordDocName;
if (File.Exists(wordDocName))
{
btnDownloadWordDoc.Visible = true;
}
else
{
btnDownloadWordDoc.Visible = false;
}
文件路径应该是物理的而不是虚拟的。 利用
if (File.Exists(Server.MapPath(wordDocName)))
File.Exists()
并且可能您想要对文件执行的所有其他操作都需要一个真实的路径。
您的wordDocName
是相对的 URL。
只需使用
string fileName = Server.MapPath(wordDocName);
利用
Server.MapPath("~/specifications/" + Convert.ToInt32(ViewState["projectSelected"]) + ".doc")
获得完全合格的路径。 那应该对你有用。
您需要使用Server.MapPath
例如
wordDocName = Server.MapPath("~/specifications/" + Convert.ToInt32(ViewState["projectSelected"]) + ".doc");
ViewState["wordDocName"] = wordDocName;
if (File.Exists(wordDocName))
{
btnDownloadWordDoc.Visible = true;
}
else
{
btnDownloadWordDoc.Visible = false;
}
如果包含文件的目录被连接/符号链接引用,这可能不起作用。 我在自己的应用程序中有这种情况,如果我将真实路径放入文件,File.Exists() 返回 true。 但是如果我使用 Server.MapPath 但文件夹实际上是文件夹的连接点,它似乎失败了。 有人经历过同样的行为吗?
您必须使用 Server.MapPath(relativePath) 将路径转换为物理路径
if (File.Exists(filePath))
wordDocName = "~/specifications/" + ViewState["projectSelected"] + ".doc";
btnDownloadWordDoc.Visible = File.Exists(Server.MapPath(wordDocName));
字符“ ~
”是 ASP.NET 中的一个特殊字符,用于获取虚拟路径规范,简单地表示“应用程序的根目录”。 .NET BCL 不理解它,如File
API 并且必须首先映射到具有Server.MapPath()
的物理路径,如其他所述。
string docname="traintatkalantnoy.txt";
string a = (Server.MapPath(docname)); if (File.Exists(a))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.