我們從我們的CdN下載一個文件,然後將該文件的url返回給用戶。我試圖讓這個實現,以便當用戶點擊下載buttton,它會去測試該網址到下載的文件,然後強制保存提示基於該本地URL。不是一個有效的虛擬路徑 - 當試圖從url中返回一個文件時
因此,舉例來說,如果有一個名爲下載頁面上特定的.pdf按鈕,我們最終有代碼在我們的控制器去到CDN和下載文件,壓縮和解則返回一個URL,例如:http://www.ourLocalAssetServer.com/assets/20120331002728.zip
我不確定您是否可以使用File()方法將資源返回給用戶,以便在您擁有該文件的url而不是系統目錄虛擬路徑時導致保存提示。
所以我怎麼能得到這個與網址工作?我需要下載按鈕來最終強制一個保存提示,在他們的最後給出一個url,比如上面這個例子生成的內容?不是我使用的是POST,也不是GET,所以不知道在這種情況下我應該使用哪一種,除此之外不能全面強制保存提示。這是擊中我的GetFileDownloadUrl,但最終錯誤說它不是一個虛擬路徑。
這裏是我的代碼:
@foreach (CarFileContent fileContent in ModelCarFiles)
{
using (Html.BeginForm("GetFileDownloadUrl", "Car", FormMethod.Get, new { carId = Model.CarId, userId = Model.UserId, @fileCdnUrl = fileContent.CdnUrl }))
{
@Html.Hidden("userId", Model.UserId);
@Html.Hidden("carId", Model.CarId);
@Html.Hidden("fileCdnUrl", fileContent.CdnUrl);
<p><input type="submit" name="SubmitCommand" value="download" /> @fileContent.Name</p>
}
}
public ActionResult GetFileDownloadUrl(string fileCdnUrl, int carId, int userId)
{
string downloadUrl = string.Empty;
// take the passed Cdn Url and go and download that file to one of our other servers so the user can download that .zip file
downloadUrl = GetFileZipDownloadUrl(carId, userId, fileCdnUrl;
// now we have that url to the downloaded zip file e.g. http://www.ourLocalAssetServer.com/assets/20120331002728.zip
int i = downloadUrl.LastIndexOf("/");
string fileName = downloadUrl.Substring(i);
return File(downloadUrl, "application/zip", fileName);
}
錯誤:不是有效的虛擬路徑