gpt4 book ai didi

c# - 录音机,将 Blob 文件保存到服务器 - C#,Mvc

转载 作者:太空狗 更新时间:2023-10-29 21:39:02 28 4
gpt4 key购买 nike

我正在做的项目中需要一个录音机,而且录制的声音必须稍后再听。该项目由 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 将哪个参数发送到 Controller ?

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

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

最佳答案

我选择 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 参数执行正常的 Controller 操作以处理文件输入。另一种方法是使用 Request.Files。但是,就我而言,我使用数据模型来接收输入。

语音 channel 类

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 是有意义的。回到客户端,您可以简单地处理结果并采取行动,例如将其附加到列表或显示错误。

关于c# - 录音机,将 Blob 文件保存到服务器 - C#,Mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28040823/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com