Чтение ключей FormData в webapi отправлено с angular 7 - PullRequest
0 голосов
/ 10 июля 2019

Я в основном собираю формданные в приложении angular 7 для отправки в метод webapi в asp.net web api для загрузки файлов. Идея заключается в том, что при загрузке файлов, мне нужно также отправить вместе с другими полями для хранения данных. В данный момент происходит загрузка трех файлов, генерируются 3 ключа, например, файл 1, файл 2 и т. Д. Как отправить запись за раз. Мне нужно передать file, documentTypeId и documentDate как часть одной записи. Нужно ли добавлять несколько значений к ключу или мне нужно создавать отдельные ключи для каждого поля

export interface IDocumentUpload {
    fileDropEntry: NgxFileDropEntry;
    name: string;
    selectedDocumentItem: { 'Id': number; 'Name': string; }
    selectedDate: Date;

}

    public files: IDocumentUpload[] = [];


    public createDocument() {

            const formData = new FormData();
            let inx = 1;
            let d = 1;
            let e = 1;

          this.files.map(doc => {

                formData.append('documentTypeId' + d++, doc.selectedDocumentItem.toString());
                formData.append('documentDate' + e++,  doc.selectedDate.toDateString());
                const fileEntry = doc.fileDropEntry.fileEntry as FileSystemFileEntry;
                fileEntry.file((file: File) => {
                    formData.append('file' + inx++, file, doc.name);
                });

            });

            this.documentUploadService.UploadDocument(formData).subscribe(data => {

            });
        }

Если я делаю console.log на клиенте, я получаю правильные ключи

formData.forEach((value,key) => {
        console.log(key+" "+value)
      });

выход

enter image description here

Однако на стороне сервера HttpContext.Current.Request.Files показывает только два ключа

[HttpPost]
        [SkipTokenAuthorization]
        [Route("api/documentupload/uploadDocument")]
        public IHttpActionResult uploadDocument()
        {
            HttpResponseMessage response;
            var mgrDocumentService = GetService<DOCUMENT>();

            var mgrStrategyDocument = new MANAGERSTRATEGY_DOCUMENT();
            var mgrStrategyDocumentService = GetService<MANAGERSTRATEGY_DOCUMENT>();
            List<int> documentIds = new List<int>();


            if (HttpContext.Current.Request.Files.Count == 0)
                return null;

            var attachmentIds = new List<int>();
            foreach (string fileName in HttpContext.Current.Request.Files)
            {
                var file = HttpContext.Current.Request.Files[fileName];
                if (file != null && file.ContentLength > 0)
                {
                    Stream fs = file.InputStream;
                    BinaryReader br = new BinaryReader(fs);
                    byte[] inputArr = br.ReadBytes((Int32)fs.Length);

                    //var inputArr = new byte[file.ContentLength];
                    //file.InputStream.Read(inputArr, 0, file.ContentLength);

                    var mgrDocument = new DOCUMENT
                    {
                        DOCUMENT_TYPE_ID = 238,
                        DOCUMENT_DATE = DateTime.Now.Date.AddDays(13),
                        NAME = file.FileName,
                        DOCUMENT_CONTENT = inputArr,
                        EXTENSION = GetFileExtension(file.FileName)
                    };

                    var a = mgrDocumentService.Create(mgrDocument);

                    documentIds.Add(mgrDocument.ID);
                    var mangerStrategyDocumentService = GetService<MANAGERSTRATEGY_DOCUMENT>();
                    var mgrStrategyDocument1 = new MANAGERSTRATEGY_DOCUMENT()
                    {
                        DOCUMENT_ID = mgrDocument.ID,
                        MANAGERSTRATEGY_ID = 7273

                    };
                    mgrStrategyDocument = mgrStrategyDocumentService.Create(mgrStrategyDocument1);
                }
                else
                {
                    throw new Exception("The file is missing.");
                }

            //return  response = Request.CreateResponse(HttpStatusCode.OK, mgrStrategyDocument);
        }
            return null;

        }
...