我正在尝试将录音发送到服务器并将其另存为.wav。我在前端使用尖角,在服务器上使用.net核心。我能够进行录制,然后创建一个类型为“ audio / wav”的blob。为了将其发送到服务器,我将其转换为数组缓冲区,然后将其转换为base64字符串,并将其发布到控制器。
在服务器端,当我将这些字节(从base 64中提取数组缓冲区后)写入wav文件时,无法播放它。有人可以帮助我在.net控制器方面做错什么。
如果有人知道更干净的方法,请告诉我
答案 0 :(得分:3)
您不必创建数组缓冲区。只需使用文件输入并发送表单数据即可。
假设您使用的是4.3版以上的语言,并使用@angular/common/http
中的HttpClientModule:
角度服务方法
public uploadFile(file: File): Observable<any> {
const formData = new FormData();
formData.Append('myFile', file);
return this.http.post('my-api-url', formData);
}
现在您是asp.net核心终结点
[HttpPost]
// attention name of formfile must be equal to the key u have used for formdata
public async Task<IActionResult> UploadFileAsync([FromForm] IFormFile myFile)
{
var totalSize = myFile.Length;
var fileBytes = new byte[myFile.Length];
using (var fileStream = myFile.OpenReadStream())
{
var offset = 0;
while (offset < myFile.Length)
{
var chunkSize = totalSize - offset < 8192 ? (int) totalSize - offset : 8192;
offset += await fileStream.ReadAsync(fileBytes, offset, chunkSize);
}
}
// now save the file on the filesystem
StoreFileBytes("mypath", fileBytes);
return Ok();
}