Отправка BLOB-файлов на сервер - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь отправить аудиозапись на сервер и сохранить ее как .wav.Я использую угловой на внешнем интерфейсе и ядро ​​.net на сервере.Я смог записать, а затем сделать BLOB-объект типа "аудио / WAV".Для отправки на сервер я преобразую его в буфер массива, а затем в буфер массива в строку base64, которую я отправляю в контроллер.

На стороне сервера, когда я записываю эти байты (после извлечения буфера массива из базы 64), в файл WAV, я не могу воспроизвести его.Может кто-нибудь помочь мне, что я делаю неправильно на стороне контроллера .net.

Если кто-то знает более понятный способ сделать это, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 27 августа 2018

Вам не нужно создавать буфер массива.Просто используйте файл-ввод и отправьте данные формы.

Предполагается, что вы используете angular 4.3 ++ и используете HttpClientModule из @angular/common/http:

Служба angular-serviceметод

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...