Beispiel #1
0
 public async Task <ActionResult <IEnumerable <byte[]> > > Get()
 {
     using (var cxt = new OrgFilesContext())
     {
         return(await cxt.OrgFiles
                .Select(f => f.FileData)
                .ToArrayAsync());
     }
 }
Beispiel #2
0
        public async Task <IActionResult> Post([FromForm] List <IFormFile> files)
        {
            // Investigate just taking a single IFormFile as argument instead
            if (files.Count > 1 || files.Count == 0)
            {
                return(BadRequest());
            }

            var inputFile = files[0];

            Console.WriteLine(inputFile.ContentType);

            if (inputFile.Length == 0)
            {
                return(BadRequest());
            }

            string tmpInputPath  = Path.GetTempFileName();
            string tmpOutputPath = Path.GetTempFileName();

            using (FileStream tmpInputFile = System.IO.File.Create(tmpInputPath))
            //using (var htmlMs = new MemoryStream())
            {
                await inputFile.CopyToAsync(tmpInputFile);
            }
            string panCmd = $"pandoc -s -f org -t html -o {tmpOutputPath} {tmpInputPath}";
            await panCmd.RunCommand();


            byte[] htmlFileBytes;

            // convert to in-memory bytes
            using (FileStream tmpOutputFile = System.IO.File.Open(tmpOutputPath, FileMode.Open))
                using (var ms = new MemoryStream())
                {
                    await tmpOutputFile.CopyToAsync(ms);

                    htmlFileBytes = ms.ToArray();
                }

            using (var context = new OrgFilesContext())
            {
                var uploadFile = new OrgFile {
                    FileData = htmlFileBytes
                };
                context.OrgFiles.Add(uploadFile);
                await context.SaveChangesAsync();

                return(Ok(uploadFile.Id));
            }
        }