私たちはCdNからファイルをダウンロードし、そのダウンロードしたファイルのURLをユーザーに返します。私はこれを実装しようとしているので、ユーザーがダウンロードボタンをクリックすると、ダウンロードされたファイルにそのURLがテストされ、そのローカルURLに基づいて保存プロンプトが強制的に実行されます。は有効な仮想パスではありません - URLからファイルを返そうとしているとき
だから、特定のPDFファイルのためのページからダウンロードというボタンがある場合、たとえば、我々は最終的に私たちのコントローラは、それが、その後のようなURLを返すビュン、CDNに行くと、ファイルをダウンロードするには、コードを持っている:http://www.ourLocalAssetServer.com/assets/20120331002728.zip
File()メソッドを使用して、システムディレクトリの仮想パスではなく、ファイルへのURLがあるときに保存プロンプトを表示するようにリソースをユーザーに返すことができるかどうかはわかりません。
どうすればこのURLで作業できますか?上記の例で生成されたものなど、URLを指定すると、最後に保存プロンプトを強制的に実行するには、ダウンロードボタンが必要ですか?私はGETではなくPOSTを使用しているわけではないので、この場合にはどちらを使うべきかはわかりません。それは私の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);
}
エラー: