2015-01-20 20 views
5

Üzerinde çalıştığım bir projede ses kayıt cihazına ihtiyacım var ve kaydedilen sesler daha sonra dinlenmelidir. Bu Proje C# ve asp.net mvc tarafından geliştirilmiştir.Ses Kaydedici, Blob dosyasını sunucuya kaydetme - C#, Mvc

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

Yukarıdaki bu bağlantı bir kayıt sistemi kullanıyorum. İndir'i tıkladığınızda, size bir dosya .wav formatı verir. Bilgisayarınıza indirildi, ancak sunucuya kaydetmek istiyorum.

Bu projenin kaynak kodları, bağlantıların altında kullanılabilir.

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

Ben Jquery kodlarını araştırmak: Bu işlevde çalışmaktadır

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

İndirmek tıkladığınızda. Eğer oyuncu wav dosyası adres çalıştığını gitmek ama oyuncu src hala below bu kodu varsa fonksiyonunda URL Parametre size

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

olarak bu bağlantıyı yanıt

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

Soru:

Ses dosyasını sunucuya nasıl kaydedebilirim. Bu web sitesindeki ve genel olarak İnternet'teki sorulardan herhangi bir çözüme ulaşamıyorum :)

1 - JQuery Ajax ile denetleyiciye hangi parametreyi göndermek zorundayım?

2 - Bu parametreyi denetleyici tarafında wav veya mp3 biçimine nasıl dönüştürebilirim?

bundan yo çok teşekkür ederim :) Ben özelleştirme istedim çünkü

cevap

3

Ben recorder.js gitti - Sadece ben kendi UI ile kullanabileceğiniz geri aramalar gerekli. bu oldukça basit,

Recorder.js Sunucu tarafında fonksiyonu

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); 
     } 
    }); 
} 

karşıya:

yazı ile başlamak için, burada ilgili JavaScript kodudur. Dosya girişine gitmek için bir HttpPostedFileBase parametresiyle normal bir denetleyici eylemi gerçekleştirin. Başka bir yol Request.Files kullanmaktır. Ancak, benim durumumda, girişi almak için bir veri modeli kullandım.

VoicePassage sınıf

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

dosyayı kaydetmek için nasıl dumbed aşağı versiyonu. Bu gerçekten çok aşağılık. Veri modellerinde standart veya özel ValidateAttribute/s kullanarak girişi doğrulamalısınız. Veri modelinde de bir yerlerde [MimeType ("audio/wav")] özniteliği olmalıdır.dosyayı

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 }); 
} 

Recorder.upload() işlevi sunucuya bir AJAX isteği verir, bu nedenle bir ActionResult yerine bir JsonResult dönmek için mantıklı kurtarmak için nasıl

zerafetini kaybederek sürümü. İstemci tarafına geri döndüğünüzde, sonucu işleyebilir ve bir listeye eklemek veya bir hatayı görüntülemek gibi işlem yapabilirsiniz.

İlgili konular