2014-06-25 110 views
1

我想將一個URL如http://localhost/app/Uploads/file.png轉換爲我的應用程序虛擬路徑,即~/Uploads/file.txt在asp net mvc中從url獲取虛擬路徑5

我的問題是如何在asp net mvc中完成?

編輯:對我的情況作進一步澄清的一些解釋。

我有一個「創建」窗體。在這種形式下,用戶設置其配置文件並可以將照片上傳到服務器。可以通過將照片上傳到服務器來預覽此照片。這是通過FileUploadController(它是一個ApiController)的動作Post()完成的。此操作只是將上傳的文件保存到虛擬路徑「〜/ Uploads /」,然後將完整的URL返回到保存的文件,如http://localhost/app/Uploads/file.png。然後,頁面上的JavaScript捕獲此URL並更新<img>標記以顯示圖片,並使用此URL設置隱藏輸入字段的值。這工作正常。

現在我必須執行提交這個「創建」表單的動作。其中,動作視圖模型接收照片的URL,即http://localhost/app/Uploads/file.png,它應該用於將文件'file.png'從臨時位置「〜/ Uploads/file.png」複製到另一個位置。但是,要複製這個文件,我需要本地路徑它,我擁有的就是URL。

+2

你從哪裏得到原始網址?如果你只是想創建一個到該文件的鏈接,那麼你會使用'Url.Content(「〜/ Uploads/file.txt」)',完全不需要這個完全限定的版本。 – David

+0

原始網址來自Url.Content(「〜/ Uploads/file.txt」)。但是,這是在另一個行動中完成的。 – TapiocaCom

+1

聽起來像http://stackoverflow.com/questions/6081433/getting-relative-virtual-path-from-physical-path –

回答

3

你可以做這樣的事情。在Razor視圖 寫這篇文章,以獲得相對於根的路徑

<script type="text/javascript"> 
    var baseUrl = '@Url.Content("~")'; 
</script> 

然後在你的提交按鈕的客戶端操作,您可以訪問並傳遞到localpath控制器的文件複製操作方法。

$("#submit").click(function() { 
    var localpath = baseUrl + "Uploads/file.png"; 
    ... 
    ... 
}); 

這是link我的另一篇文章幾乎類似的問題。