2016-02-06 24 views
13

MVCコアを使用してファイルをダウンロードすることについての参照が見つかりません。MVCコアを使用してファイルをダウンロード

私たちは、メンバーが私たちのウェブサイトからダウンロードするための単一のexeファイルを持っています。過去には、

<a href=(file path)> Download < /a>をクリックしていただきました。

<a [email protected]["DownloadLink"]> Download < /a> 

のようなMVCコアで同等の機能を実行したいと思います。ダウンロードリンクにファイルパスが設定されています。

public class DownloadController : Controller 
{ 
    [HttpGet] 
    public IActionResult Index() 
    { 
     ViewData["DownloadLink"] = ($"~/Downloads/{V9.Version}.exe"); 
     return View(); 
    } 
} 

`

リンク<a [email protected]["DownloadLink"]> Download < /a>は正しいパスを取得しますが、クリックされたときにのみ、アドレスバーにパスをレンダリングします。ダウンロードリンクを設定する簡単な方法はありますか?

+1

内容、結果を返す必要がありますあなたの行動ではなく、ビューからファイルをダウンロードするためのHttpClientを使用する方法を参照してください。 Controller.Fileメソッドを見てください。 –

答えて

22

は、私は、このソリューション

public FileResult Download() 
    { 
     var fileName = $"{V9.Version}.exe"; 
     var filepath = $"Downloads/{fileName}"; 
     byte[] fileBytes = System.IO.File.ReadAllBytes(filepath); 
     return File(fileBytes, "application/x-msdownload", fileName); 
    } 

ビューを思い付く@Tieson Tによって投稿this答えを使用

<a asp-action="Download" asp-> 
Download 

@Ageonixは約も正しかった今です〜を求めないでwwwrootに行く

+0

'return File'ですが、このファイルは静的クラスです.Net Core 2.0でどうすれば使用できますか? –

+0

ファイルは、 "FileContentResult"を返す "Microsoft.AspNetCore.Mvc.ControllerBase"の静的メソッドです。 "Ok()"または "NotFound()"と似ています。 FileContentResultはOkResultと同じようにStatusResultです。 –

1

私はどこでも試してみることはできませんが、このようなことがトリックですか?

<a href="<%= Url.Content('~/Downloads/{ V9.Version}.exe') %>"> Download </a> 
+0

@Ageonixに提案していただきありがとうございますが、VS2015はhrefに終了角括弧がありませんと不満を申し立てています。二重引用符で二重引用符を使用することを前提としていますが、それは正しくできません。 – Vague

+0

代わりに、それらの内側の引用符で1つのティックを使用してみてください。 – Ageonix

+1

あなたのサイト構造がどのようなものかは分かりませんが、もしあなたが400を手に入れたら、そこにチルダ(〜)が必要でしょうか?言い換えれば、あなたが正しい場所に来ているかどうかを再度確認しましたか? – Ageonix

-4

以前のバージョンでは、WebClientを使用してURLからファイルをダウンロードすることができました。

これはASPNetコアのHttpClientに置き換えられました。

は、ここにURL Using WebClient in ASP.NET 5

関連する問題