Как загрузить видео MP4 из Angular 8 и WebApi # - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь загрузить видео MP4 из Angular 8 в WebAPI, но проблема в том, что я не знаю, как перенести видео MP4 из Angular в Webapi, чтобы я загружал видео в хранилище AZure. Ниже мой код.

Код внутреннего веб-API

public class VideoFilesController : ApiController
    {
        private readonly MultipartFormDataStreamProvider streamProvider;
        public async void Post([FromBody]VideoFileRequest videoFileRequest)
        {
            await Request.Content.ReadAsMultipartAsync(streamProvider);

            string connectionString = ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString;
            BlobHttpHeaders blobHttpHeaders = new BlobHttpHeaders()
            {
                ContentType = "video/mp4"
            };

            BlobContainerClient container = new BlobContainerClient(connectionString, ConfigurationManager.AppSettings["destContainer"]);
            container.CreateIfNotExists(PublicAccessType.Blob);

            //lines modified
            var blockBlob = container.GetBlobClient(videoFileRequest.fileName);
            using (var fileStream = System.IO.File.OpenRead(@"C:\LocalBlobs\UpdateMP4File.mp4"))
            {
                blockBlob.Upload(fileStream);
            }

        }


    }


HTML Код для загрузки файла

<form  name="VideoFileEditorForm" #f="ngForm"
        (ngSubmit)="save(file.files)">

    <div>
      <label [class.col-md-3]="isViewOnly" [class.col-md-3]="!isViewOnly" class="col-form-label" for="file">Select a MP4 file to upload</label>
        <input #file type="file" multiple (change)="upload(file.files)" />
      </div>
  <button  type="submit" class="btn btn-primary">
           Save Video file to Azure
          </button>
        </div>
</form>

Код TypeScript

 upload(files) {
      if (files.length === 0)
        return;
      const formData = new FormData();
      for (let file of files)
        formData.append(file.name, file);
    }

private save(files) {

        if (files.length === 0)
        return;

        const formData = new FormData();
            for (let file of files)
        formData.append(file.name, file);

return this.http.post<T>("https://localhost:44396/api/VideoFiles", formData).pipe<T>(
      catchError(error => {
        return this.handleError(error, () => this.getNewVideoFileEndpoint(videoFileObject));
      }));

Итак, может ли кто-нибудь просто проверить мой код и порекомендовать мне, как я могу передать это видео Mp4 из angular в webapi, чтобы я загружал его в Azure. Спасибо

...