上传调整测试
parent
85bf1a6758
commit
97c05b4371
|
@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Authorization;
|
|||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.AspNetCore.StaticFiles;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
|
@ -36,6 +37,7 @@ using SharpCompress.Archives;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
@ -131,11 +133,13 @@ namespace IRaCIS.Core.API.Controllers
|
|||
|
||||
/// <summary> 流式上传 Dicom上传 </summary>
|
||||
[Route("base")]
|
||||
public virtual async Task<int> DicomFileUploadAsync(Func<string, Stream, int, Task> filePathFunc)
|
||||
public virtual async Task DicomFileUploadAsync(Func<string, Stream, int, Task> filePathFunc,string boundary)
|
||||
{
|
||||
|
||||
var fileCount = 0;
|
||||
var boundary = HeaderUtilities.RemoveQuotes(MediaTypeHeaderValue.Parse(Request.ContentType).Boundary).Value;
|
||||
|
||||
//var boundary = HeaderUtilities.RemoveQuotes(MediaTypeHeaderValue.Parse(Request.ContentType).Boundary).Value;
|
||||
//var boundary = mediaTypeHeader.Boundary.Value;
|
||||
|
||||
var reader = new MultipartReader(boundary, HttpContext.Request.Body);
|
||||
|
||||
|
@ -171,7 +175,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
//普通单个文件
|
||||
else
|
||||
{
|
||||
if (mediaType.Contains("octet-stream")||mediaType.Contains("dicom"))
|
||||
if (mediaType.Contains("octet-stream") || mediaType.Contains("dicom"))
|
||||
{
|
||||
++fileCount;
|
||||
|
||||
|
@ -183,7 +187,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
section = await reader.ReadNextSectionAsync();
|
||||
}
|
||||
|
||||
return fileCount;
|
||||
//return fileCount;
|
||||
}
|
||||
|
||||
|
||||
|
@ -220,22 +224,36 @@ namespace IRaCIS.Core.API.Controllers
|
|||
|
||||
|
||||
/// <summary>Dicom 归档</summary>
|
||||
[HttpPost, Route("Study/ArchiveStudy/{trialId:guid}")]
|
||||
[HttpPost, Route("Study/ArchiveStudy")]
|
||||
[DisableFormValueModelBinding]
|
||||
[DisableRequestSizeLimit]
|
||||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput> ArchiveStudyNew([FromForm] ArchiveStudyCommand archiveStudyCommand,
|
||||
//[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput> ArchiveStudyNew(/*[FromForm] ArchiveStudyCommand archiveStudyCommand,*/ Guid trialId, Guid subjectVisitId, string studyInstanceUid, Guid? abandonStudyId,
|
||||
[FromServices] ILogger<UploadDownLoadController> _logger,
|
||||
[FromServices] IEasyCachingProvider _provider,
|
||||
[FromServices] IStudyService _studyService,
|
||||
[FromServices] IHubContext<UploadHub, IUploadClient> _uploadHub,
|
||||
[FromServices] IHubContext<UploadHub, IUploadClient> _uploadHub,
|
||||
[FromServices] IDicomArchiveService _dicomArchiveService,
|
||||
[FromServices] IRepository _repository
|
||||
)
|
||||
{
|
||||
|
||||
|
||||
_logger.LogError("请求到达接口");
|
||||
|
||||
// validation of Content-Type
|
||||
// 1. first, it must be a form-data request
|
||||
// 2. a boundary should be found in the Content-Type
|
||||
if (!HttpContext.Request.HasFormContentType ||
|
||||
!MediaTypeHeaderValue.TryParse(HttpContext.Request.ContentType, out var mediaTypeHeader) ||
|
||||
string.IsNullOrEmpty(mediaTypeHeader.Boundary.Value))
|
||||
{
|
||||
return ResponseOutput.NotOk("不支持的MediaType");
|
||||
}
|
||||
|
||||
var archiveStudyCommand = new ArchiveStudyCommand() { AbandonStudyId = abandonStudyId, StudyInstanceUid = studyInstanceUid, SubjectVisitId = subjectVisitId };
|
||||
|
||||
|
||||
string studycode = string.Empty;
|
||||
|
||||
var startTime = DateTime.Now;
|
||||
|
@ -262,7 +280,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
|
||||
var savedInfo = _studyService.GetSaveToDicomInfo(archiveStudyCommand.SubjectVisitId);
|
||||
|
||||
archiveResult.ReceivedFileCount = await DicomFileUploadAsync(async (fileName, fileStream, receivedCount) =>
|
||||
await DicomFileUploadAsync(async (fileName, fileStream, receivedCount) =>
|
||||
{
|
||||
|
||||
try
|
||||
|
@ -286,7 +304,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
|
||||
await _uploadHub.Clients.User(_userInfo.Id.ToString()).ReceivProgressAsync(archiveStudyCommand.StudyInstanceUid, receivedCount);
|
||||
|
||||
|
||||
archiveResult.ReceivedFileCount = receivedCount;
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -300,7 +318,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
}
|
||||
|
||||
|
||||
});
|
||||
}, mediaTypeHeader.Boundary.Value);
|
||||
|
||||
var studyMonitor = new StudyMonitor()
|
||||
{
|
||||
|
@ -344,7 +362,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
else
|
||||
{
|
||||
studyMonitor.IsSuccess = false;
|
||||
studyMonitor.Note= JsonConvert.SerializeObject(archiveResult);
|
||||
studyMonitor.Note = JsonConvert.SerializeObject(archiveResult);
|
||||
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
|
||||
|
||||
}
|
||||
|
@ -356,7 +374,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
{
|
||||
|
||||
studyMonitor.IsSuccess = false;
|
||||
studyMonitor.Note = JsonConvert.SerializeObject(new { Message=e.Message,Result= archiveResult });
|
||||
studyMonitor.Note = JsonConvert.SerializeObject(new { Message = e.Message, Result = archiveResult });
|
||||
|
||||
_logger.LogError(e.Message + e.StackTrace);
|
||||
|
||||
|
@ -365,7 +383,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
{
|
||||
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
|
||||
|
||||
studyMonitor.StudyId = archiveResult.ArchivedDicomStudies.FirstOrDefault()?.Id??Guid.Empty;
|
||||
studyMonitor.StudyId = archiveResult.ArchivedDicomStudies.FirstOrDefault()?.Id ?? Guid.Empty;
|
||||
studyMonitor.StudyCode = archiveResult.ArchivedDicomStudies.FirstOrDefault()?.StudyCode;
|
||||
studyMonitor.UploadFinishedTime = DateTime.Now;
|
||||
await _repository.AddAsync(studyMonitor, true);
|
||||
|
|
|
@ -220,10 +220,10 @@
|
|||
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.FileUploadAsync(System.Func{System.String,System.Threading.Tasks.Task{System.String}})">
|
||||
<summary> 流式上传 通用封装 不返回任何数据,后续还有事情处理 </summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Int32,System.Threading.Tasks.Task})">
|
||||
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Int32,System.Threading.Tasks.Task},System.String)">
|
||||
<summary> 流式上传 Dicom上传 </summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(IRaCIS.Core.Application.Contracts.ArchiveStudyCommand,Microsoft.Extensions.Logging.ILogger{IRaCIS.Core.API.Controllers.UploadDownLoadController},EasyCaching.Core.IEasyCachingProvider,IRaCIS.Core.Application.Contracts.IStudyService,Microsoft.AspNetCore.SignalR.IHubContext{IRaCIS.Core.API.UploadHub,IRaCIS.Core.API.IUploadClient},IRaCIS.Core.Application.Contracts.Dicom.IDicomArchiveService,IRaCIS.Core.Infra.EFCore.IRepository)">
|
||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(System.Guid,System.Guid,System.String,System.Nullable{System.Guid},Microsoft.Extensions.Logging.ILogger{IRaCIS.Core.API.Controllers.UploadDownLoadController},EasyCaching.Core.IEasyCachingProvider,IRaCIS.Core.Application.Contracts.IStudyService,Microsoft.AspNetCore.SignalR.IHubContext{IRaCIS.Core.API.UploadHub,IRaCIS.Core.API.IUploadClient},IRaCIS.Core.Application.Contracts.Dicom.IDicomArchiveService,IRaCIS.Core.Infra.EFCore.IRepository)">
|
||||
<summary>Dicom 归档</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitClinicalData(System.Guid)">
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Filter
|
|||
var factories = context.ValueProviderFactories;
|
||||
//factories.RemoveType<FormValueProviderFactory>();
|
||||
factories.RemoveType<FormFileValueProviderFactory>();
|
||||
//factories.RemoveType<JQueryFormValueProviderFactory>();
|
||||
factories.RemoveType<JQueryFormValueProviderFactory>();
|
||||
context.HttpContext.Request.EnableBuffering();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue