我需要从上传到控制器的 blob 中删除以下标头部分。我尝试使用该GET
方法,但无法加载数据。此标头会阻止文件正确播放。
------WebKitFormBoundaryRxmjN7irF2fjoibL
Content-Disposition: form-data; name="that_random_filename.wav"; filename="blob"
Content-Type: audio/wav
控制器
public JsonResult SubmitSound()
{
var length = Request.ContentLength;
var bytes = new byte[length];
Request.InputStream.Read(bytes, 0, length);
// Create the new, empty data file.
string fileName = AppDomain.CurrentDomain.BaseDirectory + "/Content/Sound/" + Environment.TickCount + ".wav";
FileStream fs = new FileStream(fileName, FileMode.CreateNew);
BinaryWriter w = new BinaryWriter(fs);
w.Write(bytes);
w.Close();
fs.Close();
return new JsonResult() { Data = "Saved successfully" };
}
编辑
我使用recordjs
的是 Matt Diamond(演示,仅适用于 Chrome),一个记录语音的库,将其保存为 javascript 变量中的 blob。这是一种硬逻辑,我无法将该 blob 更改为文件,主要是因为它只是内存中的一个变量。
看法
function doneEncoding(blob) {
var xhr = new XMLHttpRequest();
var fd = new FormData();
fd.append("that_random_filename.wav", blob);
console.log(fd);
xhr.open("POST", "/Home/SubmitSound", true);
xhr.send(fd);
Recorder.forceDownload(blob, "myRecording" + ((recIndex < 10) ? "0" : "") + recIndex + ".wav");
recIndex++;
}
我可以手动删除数组的第 n 个字节,但这对我来说不够优雅。能否请你帮忙?谢谢