2015-04-17 79 views
0

我想傳遞一個文件夾路徑使用@Html.ActionLink一個下載器,但我越來越找不到像如何通過一個文件夾路徑MVC控制器

找不到文件「C的位置誤差:\ Teerth 內容\項目\ Colege \ Web應用程序\媒體\ @ item.Content」

然而,當我給硬編碼值,它的工作。我可以提出一些建議嗎?

這裏是我的代碼: 操作方法:

public FileResult Download(string fileName, string filePath) 
{ 
    byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); 
    string documentName = fileName; 
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, documentName); 
} 

視圖

@Html.ActionLink("Download", "Download", "Marketing", routeValues: new 
{ 
    fileName = @item.Content, 
    filePath = Server.MapPath("~/Media/@item.Content"), 
    area = "AffiliateAdmin" 
}, htmlAttributes: null) 
+4

'filePath = Server.MapPath(「〜/ Media /」+ @ item.Content)' –

+0

謝謝你發現問題。 – Teerth

回答

2

就像提到in comments,你有你的觀點的錯誤:

代碼("~/Media/@item.Content")呈現作爲C:\Teerth Content\Project\Colege\WebApp\Media\@item.Content,你實際上想要Server.MapPath("~/Media/" + @item.Content)找到實際的文件名。

但是您需要重新考慮這一設計,因爲它會將整個機器打開到網絡。有人必然會嘗試Download("C:\Teerth Content\Project\Colege\WebApp\web.config", "web.config"),暴露您的連接字符串和其他應用程序設置,更不用說您的服務器上的其他文件,你真的不希望客戶端下載。

相關問題