我已经采用了一个asp/c#web应用程序来修复原来在我工作场所的开发人员完成的工作。该代码显示了一个由查询结果填充的Gridview,该查询显示了文件列表,其中一列由'命令字段'组成,当单击下载文件时。一切似乎顺利,直到它到达文件下载,因为它似乎无法找到服务器上的文件。我的C#真的不是很强大,所以请耐心等待,如果您需要更多的信息,我已经错过了,请说明一下。无法找到文件下载路径错误的一部分
这里是代码的特定部分引起的问题:
//strSuppDocName - is already declared elsewhere
string path = System.IO.Path.Combine(Server.MapPath("~/Documents/"), strSuppDocName);
if (!Directory.Exists(path)){
System.Windows.Forms.MessageBox.Show(path + " - file path doesn't exist");
}
else {
System.Net.WebClient client = new System.Net.WebClient();
Byte[] buffer = client.DownloadData(path);
if (buffer != null)
{
Response.ClearContent();
Response.ClearHeaders();
FileInfo file = new FileInfo(path);
Response.Clear();
Response.AddHeader("Content-Disposition", "Attachment;FileName:" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = ReturnExtension(strExtSuppDoc.ToLower());
Response.WriteFile(file.FullName);
Response.End();
}
}
什么,当我运行的代码是网格视图填充好的情况,我点击要下载的文件,它进入的第一个分支if语句显示路径。在我添加if语句之前,它显示以下错误:“无法找到路径的一部分”。我试着用路径摆弄如绝对设置它:
string path = System.IO.Path.Combine(@"E:\web\Attestation\Documents\", strSuppDocName);
而且没有使用上述组合方法并且使用“+”标准字符串连接。非常感谢任何帮助或指导,谢谢!
那么究竟什么是* *路径和你确定它实际上*不*存在吗?你可以像IIS运行的用户那样访问它吗? – nvoigt
感谢您的回复@nvoigt - _path_是一个文件,可能是PDF或图像(PNG,JPEG等)。我检查过文件系统,它确实存在,我也尝试在本地运行代码,并将文件本地添加到我的PC,这导致我相信代码是错误的,因为该文件在那里。如果我将它直接指向文件而不是目录,Directory.Exists()会返回false吗?也许这是问题? – haakym
当然,如果你在那里放置一个文件,它将返回false,因为这不是一个目录。 – nvoigt