【问题标题】:Voice Recorder, Saving Blob file to server - C# , Mvc录音机,将 Blob 文件保存到服务器 - C#,Mvc
【发布时间】:2015-03-18 09:56:45
【问题描述】:

我正在从事的项目中需要一个录音机,并且录制的声音必须在以后收听。 该项目由 c# 和 asp.net mvc 开发。

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

我在上面那个链接中使用了一个记录系统。当您单击下载时,它会为您提供 .wav 格式的文件。 它已下载到您的计算机,但我想将其保存到服务器。

此项目的源代码位于链接下方。

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

我调查 jquery 代码: 当您点击下载时

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

它在这个函数中工作。函数中的 URL 参数将链接响应为

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

当你去播放器 wav 文件中的 adres 工作时,播放器中的 src 仍然有以下代码

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

问题:

如何将声音文件保存到服务器。我无法从本网站和互联网上的问题中找到任何解决方案:)

1 – 我必须使用 Jquery Ajax 将哪个参数发送到控制器?

2 – 如何在控制器端将该参数转换为 wav 或 mp3 格式?

从现在开始非常感谢你:)

【问题讨论】:

    标签: c# jquery asp.net-mvc audio blob


    【解决方案1】:

    我选择 recorder.js 是因为我想要自定义 - 我只需要可以在我自己的 UI 中使用的回调。

    从这篇文章开始,下面是相关的 JavaScript 代码:

    Recorder.js 上传功能

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

    在服务器端,这非常简单。您可以使用带有 HttpPostedFileBase 参数的普通控制器操作来处理文件输入。另一种方法是使用 Request.Files。但是,就我而言,我使用数据模型来接收输入。

    语音通道类

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

    如何保存文件的简化版本。这个真是一言难尽。您应该在数据模型上使用标准或自定义 ValidateAttribute/s 来验证输入。数据模型中的某个地方也应该有一个自定义的 [MimeType("audio/wav")] 属性。

    如何保存文件的简化版

    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() 函数向服务器发出 AJAX 请求,因此返回 JsonResult 而不是 ActionResult 是有意义的。回到客户端,您可以简单地处理结果并采取行动,例如将其附加到列表或显示错误。

    【讨论】:

      猜你喜欢
      • 2016-01-28
      • 2017-03-19
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 2013-04-24
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多