Я в основном собираю формданные в приложении 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)
});
выход
Однако на стороне сервера 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;
}