2016-12-22 8 views
0

データベースフィールドから物理ファイルを取得するのに夢中になりました。私はasp.net MVCプロジェクト(dotnetコア1.1)を使用します。 avanceとHappy Christamsに感謝します!私CONTROLLERの一部で[dotnet core MVC]、バイト配列(データベースに格納されたフィールド)からファイルを取得できません。

public void Download(int id) 
{ 
    downloadMyFile(_context.myTable.Find(id).MyBLOBField, 
       _context.myTable.Find(id).MyFieldContentType, 
       _context.Richieste.Find(id).MyFieldOriginalFileName 
    ); 
} 

public FileContentResult downloadMyFile(byte[] fileBytes, 
            string fileContent, string fileName) 
{ 
      return File(fileBytes, fileContent, fileName); 
} 

マイVIEW:

<a asp-action="Download" asp-route-id="@Model.Id"> Download File</a> 

**

マイノート:

私はこれを使用している場合は、動作します:

public FileResult download() 
     { 
      var fileName = @"myRealFileNameStoredInTheServer.ext"; 
      var filepath = $"Downloads/{fileName}"; 
      byte[] fileBytes = System.IO.File.ReadAllBytes(filepath); 
      return File(fileBytes, "application/x-msdownload", fileName); 
     } 

が、別のバイト配列からPASSバイト配列は

I動作しません私もResponseメソッドを使用しようとしましたが、ResponseのASPNET COREオーバーロードでBinaryWrite()を見つけることができません...何もありませんg MemoryStream! 私を助けることができます.. ..?

+3

あなたの方法は、 'void'です - あなたは解決策を持っていますか、それは何も –

+0

を返さないのですか? –

+1

'downloadMyFile()' - 'return downloadMyFile(.....);の結果を返すように' public FileContentResult Download(int id) 'にして(他のメソッドを' private'にしてください)、 –

答えて

0

私 課題となっているのか理解のためのステファン・ミュエッケのコメントを読んでください。

public FileContentResult Download(int id) 
{ 
    return File(_context.myTable.Find(id).MyBLOBField, 
       _context.myTable.Find(id).MyFieldContentType, 
       _context.Richieste.Find(id).MyFieldOriginalFileName 
    ); 
} 
関連する問題