2016-07-11 15 views
0

Ich habe erfolgreich das Upload-Bit - hochgeladen die MP3-Dateien auf meinem SQL Server, aber ich brauche Hilfe beim Herunterladen der Dateien .... Ich verwende Folgendes Code laden Sie die MP3-DateiWie MP3-Dateien mit ASP.NET MVC 5 & Entity Framework herunterladen

public ActionResult Create([Bind(Include = "ID,Artist,Album")] TrackUpload trackUpload, HttpPostedFileBase upload) 
{ 
    try 
    { 
     if (ModelState.IsValid) 
     { 
      if (upload != null && upload.ContentLength > 0) 
      { 
       var song = new File 
       { 
        FileName = System.IO.Path.GetFileName(upload.FileName), 
        FileType = FileType.Songs, 
        ContentType = upload.ContentType 
       }; 
       using (var reader = new System.IO.BinaryReader(upload.InputStream)) 
       { 
        song.Content = reader.ReadBytes(upload.ContentLength); 
       } 
       trackUpload.Files = new List<File> { song }; 
      } 
      db.TrackUploads.Add(trackUpload); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
    } 

    catch (RetryLimitExceededException /* dex */) 
    { 

     ModelState.AddModelError("", "Cant save changes."); 
    } 
    return View(trackUpload); 
} 

Es funktioniert prima, die die Datei speichert in der Datenbank bedeutet, nun, wie ich die MP3-Datei von sQL lade db Entity Framework

+0

Diesen Artikel schreiben TrackUpload.cs Ich möchte ihn sehen –

+0

@TetsuyaYamamoto geben Sie die richtige Antwort oder den Hinweis auf die Antwort. Eine Sache, wenn die Dateien groß sind, dann speichern Sie sie nicht als Blob gelesen über Filestream und speichern Sie sie in FileStream. –

Antwort

1

mit einer MP3-Datei herunterladen Vergewissern Sie sich, dass Sie vom MVC-Controller aus den MIME-Typ FileContentResult alsfestgelegt haben 10, audio/mpeg3 oder audio/x-mpeg3 (für Details siehe http://filext.com/file-extension/MP3).

Hier ist ein einfacher Controller-Code definiert Datei Szenario Download:

/* 
* assume Id becomes file ID key to download 
* this code provides simple download function by returning FileContentResult with proper MIME type 
*/ 
public FileContentResult DownloadFile(int Id) 
{ 
    // assume FileContext is your file list DB context with FileName property (file name + extension, e.g. Sample.mp3) 
    using (FileContext db = new FileContext()) 
    { 
     var download = db.TrackUploads.Where(x => x.ID == Id).SingleOrDefault(); 
     if (download != null) 
     { 
      // remove this line if you want file download on the same page 
      Response.AddHeader("content-disposition", "inline; filename=" + download.FileName); 
      return File(download.FileName, "audio/mp3"); 
     } 
     else 
     { 
      return null; 
     } 
    } 
} 

Nachtrag

Um MIME-Typen von Dateierweiterung zu erhalten, bevor das Herunterladen, kann dieser Code Teil arbeiten:

if (download != null) 
{ 
    String mimeType = MimeMapping.GetMimeMapping(download.FileName); 
    ... 
    // other tasks 
    ... 
    return File(download.FileName, mimeType); 
} 

Referenz: view and download File from sql db using Entity FrameWork (mit Anpassung für MP3-Erweiterung)

+0

Danke, können Sie bitte mit der html Ansicht Markup auch helfen? – otoloye

+0

Zeigen Sie Ihre Rasierer-Markup-Ansicht in Ihrer Frage und ich werde versuchen, Ihnen zu helfen. Ich schlage vor, Sie verwenden ein Formular mit Download-Taste wie '@ using (Html.BeginForm (" DownloadFile "," Controller ", FormMethod.Post))' zum Herunterladen von MP3-Dateien. –

Verwandte Themen