Мы загружаем файл с нашего CdN и затем возвращаем URL-адрес этого загруженного файла пользователю. Я пытаюсь реализовать это так, чтобы, когда пользователь нажимает кнопку загрузки, он проверял этот URL-адрес этого загруженного файла и затем вызывал запрос на сохранение на основе этого локального URL-адреса.
Так, например, если на странице есть кнопка с названием download для определенного файла .pdf, в конечном итоге у нас в контроллере есть код, идущий к cdn и загружающий файл, архивирующий его и возвращающий URL, такой как: http://www.ourLocalAssetServer.com/assets/20120331002728.zip
Я не уверен, что вы можете использовать метод File () для возврата ресурса пользователю, чтобы вызвать запрос сохранения, когда у вас есть URL-адрес файла, а не виртуальный путь к системному каталогу.
Так, как я могу заставить это работать с 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);
}
ошибка: недопустимый виртуальный путь