Ваш репо не должен использовать IFormFile
. Это абстракция, которая применяется только к одному конкретному методу передачи файлов HTTP (а именно к телу запроса в кодировке multipart/form-data
). Что-то вроде вашего репозитория не должно знать источника файла (HTTP) или как он был передан (multipart/form-data
против application/json
, например).
Вместо этого выследует использовать Stream
для вашего параметра. В своем действии UploadDoc
вы можете просто выполнить:
using (var stream = file.OpenReadStream())
{
await documentRepository.UploadFile(stream);
}
И, где у вас есть только байтовый массив:
using (var stream = new MemoryStream(byteArray))
{
await documentRepository.UploadFile(stream);
}
Вы также можете рассмотреть возможность добавления перегрузкиUploadFile
, что занимает byte[]
, так как создание нового потока памяти из байтового массива просто для того, чтобы иметь поток, является пустой тратой ресурсов. Тем не менее, byte[]
должен обрабатываться иначе, чем Stream
, поэтому для этого может потребоваться некоторое дублирование логики. Вам нужно будет оценить компромиссы.