Example #1
0
        public async Task <IActionResult> UploadAsync(IFormFile file)
        {
            try
            {
                if (file.Length > 0)
                {
                    (string requestId, string tempFileDir) = Helper.GetRequestIdandTempDir();
                    var fileName           = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                    var normalizedFileName = requestId + ".docx";
                    var tempFilePath       = Path.Combine(tempFileDir, normalizedFileName);

                    using (var tempFileStream = new FileStream(tempFilePath, mode: FileMode.Create)) {
                        file.CopyTo(tempFileStream);
                        tempFileStream.Close();
                    }

                    ConversionResult cmdRes = null;
                    cmdRes = await Runner.Docx2HubAsync(tempFilePath);

                    if (cmdRes.ResultFilePath == null || System.IO.File.Exists(cmdRes.ResultFilePath) != true)
                    {
                        string details = cmdRes.ToString();
                        return(Problem(detail: details));
                    }

                    return(PhysicalFile(cmdRes.ResultFilePath, MimeTypeMap.GetMimeType("xml")));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, $"Internal server error: {ex}"));
            }
        }