public async Task DoWorkAsync() { ProcessingTaskQueueMessage msg = await _queueService.DequeueConversionTaskAsync(); if (null == msg) { return; } ProcessingTask task = await _taskService.GetTaskAsync(msg.Task.Id); if (null == task || null == task.SourceFile || string.IsNullOrWhiteSpace(task.SourceFile.BlobFileName)) { return; } IFileProcessor fileProcessor = _fileProcessors[task.Operation]; if (null == fileProcessor) { return; } Trace.TraceInformation("Обрабатываем задание {0}", JsonConvert.SerializeObject(msg.Task)); var sourceStream = await _fileStorageService.GetSourceFileStreamAsync(task.SourceFile.BlobFileName); var destinationStream = new MemoryStream((int)sourceStream.Length); // плохо, но не хочется делать файлы await fileProcessor.ProcessFileAsync(sourceStream, destinationStream); destinationStream.Seek(0, SeekOrigin.Begin); var destinationFile = await _fileStorageService.SaveDestinationFileStreamAsync(destinationStream, task.SourceFile.MimeContentType); destinationStream.Close(); task.DestinationFile = destinationFile; task.Status = TaskStatus.Success; task.Message = "Task Processed Succesfully"; await _taskService.SaveTaskAsync(task); await _queueService.DeleteConversionTaskAsync(msg.Id, msg.PopReceipt); Trace.TraceInformation("Задание обработано успешно"); }
public async Task <IActionResult> Upload(IFormFile files) { await _fileProcessor.ProcessFileAsync(files); return(NoContent()); }