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

标签 javascript c# angular asp.net-core

我正在尝试将录音发送到服务器并将其保存为 .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/

相关文章:

javascript - 拒绝所有 AJAX 请求

javascript - 我正在尝试通过 php 代码更新记录。但我的代码遇到问题

javascript - 在带有 AutoForm 和 Iron Router 的 Meteor 上检查插入成功后重定向提交表单的标准模式?

javascript - 有没有办法在加载网站之前询问用户

c# - 如何在 Windows Phone 8.1 RT 应用程序中滚动到 ListView 的底部?

c# - 从两个不同的词典中获取相同的键

javascript - event.preventDefault 和 stopPropagation 在拖/放事件中未按预期工作

c# - 比较两个文件夹 - 模板与实际

html - 如果主页上不存在 Chart.js 则不会在 Angular2 中显示

html - 自定义或删除 ionic 行之间的空间