gpt4 book ai didi

javascript - 将 blob 文件发送到服务器

转载 作者:太空狗 更新时间:2023-10-29 18:23:02 26 4
gpt4 key购买 nike

我正在尝试将录音发送到服务器并将其保存为 .wav。我在前端使用 Angular,在服务器上使用 .net Core。我能够录制,然后制作一个“音频/wav”类型的 blob。为了将其发送到服务器,我将其转换为数组缓冲区,然后将数组缓冲区转换为 base64 字符串,然后将其发布到 Controller 。

在服务器端,当我将这些字节(从 base 64 提取数组缓冲区后)写入 wav 文件时,我无法播放它。有人可以帮我解决我在 .net Controller 方面做错了什么吗。

如果有人知道更简洁的方法,请告诉我

最佳答案

您不必创建数组缓冲区。只需使用文件输入并发送表单数据。

假设您使用的是 Angular 4.3++ 并使用 HttpClientModule来自 @angular/common/http:

Angular 服务方法

public uploadFile(file: File): Observable<any> {
const formData = new FormData();
formData.Append('myFile', file);
return this.http.post('my-api-url', formData);
}

现在你是 asp.net-core 端点

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

关于javascript - 将 blob 文件发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52032438/

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