Javascript 将blob文件发送到服务器

Javascript 将blob文件发送到服务器,javascript,c#,angular,asp.net-core,Javascript,C#,Angular,Asp.net Core,我正在尝试将音频录制发送到服务器并将其另存为.wav。我在前端使用angular,在服务器上使用.net core。我能够录制,然后制作一个类型为“audio/wav”的blob。为了将其发送到服务器,我将其转换为数组缓冲区,然后将数组缓冲区转换为base64字符串,并将其发送到控制器 在服务器端,当我将这些字节写入wav文件时(从基64提取数组缓冲区后),我无法播放它。有人能帮我一下我在.net控制器方面做错了什么吗 如果有人知道更干净的方法,请告诉我您不必创建数组缓冲区。只需使用文件输入并发

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

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


如果有人知道更干净的方法,请告诉我您不必创建数组缓冲区。只需使用文件输入并发送表单数据

假设您使用angular 4.3++并使用from
@angular/common/http

角服务法

public uploadFile(file: File): Observable<any> {
   const formData = new FormData();
   formData.Append('myFile', file);
   return this.http.post('my-api-url', formData);
}
公共上传文件(file:file):可观察{
const formData=new formData();
Append('myFile',file);
返回此.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();
}
[HttpPost]
//注意:formfile的名称必须等于您用于formdata的键
公共异步任务UploadFileAsync([FromForm]IFormFile myFile)
{
var totalSize=myFile.Length;
var fileBytes=新字节[myFile.Length];
使用(var fileStream=myFile.OpenReadStream())
{
var偏移=0;
while(偏移量
请确认其角度是
角度
还是
角度
。你的标签和问题相互矛盾。另外,请分享您迄今为止所使用的代码。提取时可能是您的内容类型不正确。提取时我没有使用内容类型。简单地将字节数组保存为wav第一个是什么,比如80字节的上传负载有两件事:1)如果您将服务器端绑定到
byte[]
ASP.NET核心将负责将base64字符串转换为
byte[]
(假设您在这里提出JSON,这似乎很可能。2)您的问题可能是“制作一个音频/wav类型的blob“部分。这是将blob传递给Asp.net核心的最佳解决方案。我尝试使用ArrayBuffer,然后将其转换为UInt8Array,最后将其转换为Base64编码字符串。然后我在Asp.NETCore上将其转换回字节数组,但当我尝试使用创建的字节创建文件时,得到了一个空的pdf。对于表单数据,它可以完美地工作。非常感谢……这对程序周围没有任何外来噪音,正是我所需要的(而且很难找到)