Exemple #1
0
        public async Task <IActionResult> GetResultFile([FromHeader, Required] Guid fileToken)
        {
            var    query2     = new GetFilePathByTokenQuery(fileToken);
            string pathToFile = await _mediator.Send(query2);

            if (String.IsNullOrEmpty(pathToFile))
            {
                return(NotFound());
            }

            var query    = new GetFileQuery();
            var filePath = await _mediator.Send(query);

            var    memory       = new MemoryStream();
            string pathToResult = filePath;

            using (var stream = new FileStream(pathToResult, FileMode.Open))
            {
                await stream.CopyToAsync(memory);
            }

            memory.Position = 0;
            string mimeType = "application/octet-stream";

            return(File(memory, mimeType, Path.GetFileName(pathToResult)));
        }
Exemple #2
0
        public async Task <IActionResult> GetFile(int fileId, CancellationToken token = default(CancellationToken))
        {
            var query = new GetFileQuery(fileId, 200, 200);
            var file  = await _queryProcessor.ExecuteAsync(query, token);

            if (file == null)
            {
                return(new NotFoundResult());
            }

            return(new FileContentResult(file.Contents, new MediaTypeHeaderValue(file.MimeType)));
        }
        public Result <Business.FileInfo> GetFileInfo(GetFileQuery query)
        {
            var dirpath   = Path.Combine(settings.FileStorageRootPath, query.Username);
            var filepath  = Path.Combine(dirpath, query.DataFileId.ToString());
            var extension = query.FileType == FileType.Input ? ".csv" : ".h5";

            var result = Result.SuccessIf(
                Directory.Exists(dirpath) && File.Exists(filepath),
                "Invalid file path")
                         .Map(() => new Business.FileInfo()
            {
                Filename = query.DataFileId.ToString() + "_" + query.Username + extension,
                Filepath = filepath
            });

            return(result);
        }
        public HttpResponseMessage Get([FromUri] string path)
        {
            try
            {
                GetFileQuery query = new GetFileQuery()
                {
                    MandatorUIDs            = RequestMandatorUIDs,
                    FileSystemDirectoryPath = ConfigurationManager.AppSettings["FileSystemDirectory"],
                    Path = path
                };

                GetFileQueryHandler handler = new GetFileQueryHandler(query, UnityContainer);

                var response = Request.CreateResponse(HttpStatusCode.OK);

                response.Content = handler.Handle();

                response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = Path.GetFileName(query.Path)
                };

                response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

                return(response);
            }
            catch (UnauthorizedAccessException e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, e));
            }
            catch (DataException e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e));
            }
            catch (FileNotFoundException e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, e));
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e));
            }
        }
 public GetFileQueryHandler(GetFileQuery query, IUnityContainer unityContainer) : base(unityContainer)
 {
     _query = query;
 }