我已經採用了一個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