2015-01-20 8 views
5

Potrzebuję dyktafonu w projekcie, nad którym pracuję, a także nagrane głosy muszą być odsłuchane później. Ten projekt opracowany przez C# i asp.net mvc.Dyktafon, zapisywanie pliku Blob na serwerze - C#, Mvc

http://demos.subinsb.com/jquery/voice/

Używam systemu rejestratora w tym linku powyżej. Gdy klikniesz Pobierz, otrzymasz plik w formacie .wav. Jest on pobierany na komputer, ale chcę go zapisać na serwerze.

Kody źródłowe tego projektu są dostępne pod linkiem.

http://demos.subinsb.com/down.php?id=s/rvx90xq1xtpak3xc647n&class=31

ja zbadać kod jquery: Gdy klikniesz Pobierz

$(document).on("click", "#download:not(.disabled)", function() { 
      $.voice.export(function (url) { 
       $("<a href='" + url + "'download='MyRecording.wav'></a>")[0].click(); 
      }, "URL"); 
      restore(); }); 

ona pracuje w tej funkcji. Url parametre w funkcji odpowiedzieć ci, że link jako

blob:http%3A//localhost%3A1875/146432b2-8b1b-4eef-8d77-1fdbc8fc74c9 

Kiedy idziesz które Adres w pliku wav player pracuje ale src odtwarzacz stil ma ten kod below

blob:http%3A//localhost%3A1875/146432b2-8b1b-4eef-8d77-1fdbc8fc74c9 

Pytanie:

Jak mogę zapisać plik dźwiękowy na serwer. Nie mogę znaleźć żadnego rozwiązania z pytań na tej stronie i ogólnie w Internecie :)

1 - Który parametr mam wysłać do kontrolera z Ajax Jquery?

2 - Jak przekonwertować ten parametr na format WAV lub MP3 po stronie sterownika?

Dziękuję yo tyle od teraz :)

Odpowiedz

3

poszedłem z recorder.js bo chciałem dostosowywania - Potrzebowałem tylko zwrotnych można używać z moim UI.

Aby rozpocząć ze stanowiskiem, tutaj jest odpowiedni kod JavaScript:

Recorder.js przesłać funkcja

doUpload: function(title, filename) { 
    Recorder.upload({ 
     method: "POST", 
     url: "@Url.Action("Upload", "Recordings")", 
     audioParam: "Recording", // Name for the audio data parameter 
     params: { 
      // Additional parameters need to be an object 
      "Title": title, 
      "FileName": filename 
     }, 
     success: function(response) { 
      console.log(response); 
     } 
    }); 
} 

Po stronie serwera, to całkiem proste. Podejmujesz normalną akcję kontrolera za pomocą parametru HttpPostedFileBase, aby przejść do pliku wejściowego. Innym sposobem jest użycie pliku Request.Files. Jednak w moim przypadku użyłem modelu danych do odbioru danych wejściowych.

klasa VoicePassage

public class VoicePassage 
{ 
    public string Title { get; set; } 
    public string FileName { get; set; } 
    public HttpPostedFileBase Recording { get; set; } 
} 

Wersja dumbed-dół jak zapisać plik. Ten jest naprawdę zepsuty. Powinieneś sprawdzać dane wejściowe za pomocą standardowych lub niestandardowych ValidateAttribute/s w swoich modelach danych. Powinien też istnieć niestandardowy atrybut [MimeType ("audio/wav")] w modelu danych.

dumbed dół wersja jak zapisać plik

public JsonResult Upload(VoicePassage passage) 
{ 
    // Validate the input 
    // ... 
    // ... 

    // Save the file 
    string path = Server.MapPath(string.Format("~/Recordings/{0}.wav", passage.FileName)); 
    passage.Recording.SaveAs(path); 

    return Json(new { Success: true }); 
} 

Funkcja Recorder.upload() wysyła żądania AJAX do serwera, więc ma to sens, aby powrócić raczej JsonResult niż ActionResult. Wracając do strony klienta, możesz po prostu przetworzyć wynik i podjąć działanie, np. Dołączyć do listy lub wyświetlić błąd.

Powiązane problemy