我需要提供一個下載鏈接到D:驅動器中的pdf文件。如何從另一個驅動器獲取文件下載的絕對路徑?
我的網站託管在C:同一系統的驅動器中。
如何在C:驅動器託管的我的網站上的D:驅動器中下載我的pdf文件的鏈接?
我需要提供一個下載鏈接到D:驅動器中的pdf文件。如何從另一個驅動器獲取文件下載的絕對路徑?
我的網站託管在C:同一系統的驅動器中。
如何在C:驅動器託管的我的網站上的D:驅動器中下載我的pdf文件的鏈接?
通常,我儘量不要直接暴露可下載文件。
相反,我編寫了一個ASHX處理程序(Visual Studio中的「Generic Handler」),用於提取文件並將其發送到用戶的瀏覽器。
基本上,你傳遞一個唯一的ID給處理程序(例如純文件名)和處理程序,其餘在本地獲取文件,並在這個僞代碼流式傳輸到瀏覽器,如:
public class MyHandler :
IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var fileName = Request[@"fn"];
var filePath = Path.Combine(@"C:\My\Fixed\File\Path", fileName);
Response.ContentType = @"application/pdf";
Response.AddHeader(
@"Content-Disposition",
@"attachment; filename=" + Path.GetFileName(filePath));
Response.AddHeader(
@"Content-Length",
new FileInfo(filePath).Length);
Response.WriteFile(filePath);
Response.End();
}
public bool IsReusable
{
get { return false; }
}
}
這種方法的優點是您可以完全控制是否以及如何下載文件。一些場景包括:
我無法打開PDF文件。它說的文件可能是腐敗的。所以我試圖下載一個txt文件。當我打開該文件時,內容丟失了。我以下面的文件內容爲「<!DOCTYPE html PUBLIC' - // W3C // DT」。 –
所以你刪除了15個聲望點,因爲我的_pseudo code_不起作用?當然,你必須根據你的需要來調整它。 –
對不起..它不是..它沒有工作.. Response.WriteFile(filePath);無法映射到另一個驅動器。這是我的實際問題。只能從projet文件夾下載 –
可以掛載驅動器使用NTFS交接點,這將使你的D:
驅動器出現,就好像它是你的C:
驅動器的一部分,這是目前D:
到文件夾C:
驅動器內。所有問題解決。
mklink
是Windows附帶的一個程序,可以幫助您創建,管理和刪除各種鏈接(包括連接點),它的使用細節可以在at the Microsoft TechNet documentation center找到。
或者,您可能對符號鏈接和硬鏈接感興趣,它們本質上是相似的(雖然有細微差別)。
你試過:字符串str = HttpContext.Current.Request.Url.AbsolutePath; ? –
對不起,這是..即時新到stackoverflow。將很快做到。和路徑..我只需要給一個下載鏈接。但我無法引用D中的文件: –