Итак, я сейчас следую этому учебнику. Я сделал то же самое, когда дело дошло до HTML, но для моего контроллера я сделал что-то другое.
В этом уроке они используют какой-то временный каталог для хранения IFormFile, т.е.
var filePath = Path.GetTempFileName(); //we are using Temp file name just for the example. Add your own file path.
filePaths.Add(filePath);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await formFile.CopyToAsync(stream);
}
Однако я обнаружил, что в действительности нет необходимости делать то, что я собираюсь сделать, а именно - получить файл в byte[]
вместе с именем файла, чтобы я мог передать их в свою базу данных. Что я могу сделать следующим образом:
string filename = string.Empty;
byte[] fileBytes = null;
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
filename = formFile.FileName;
BinaryReader reader = new BinaryReader(formFile.OpenReadStream());
fileBytes = reader.ReadBytes((int)formFile.Length);
}
}
//logic for storing in the db
Следовательно, какова цель сделать то, что было сделано выше сниппита (GetTempFileName
)?
- Обеспечивает ли это некоторую безопасность, если файлы превышают определенный размер, или я в порядке с моим кодом?
- Если по умолчанию файлы FormFiles хранятся в каком-то временном каталоге, как бы я тогда избавиться от них? Они утилизируются после того, как мой результат был отправлен?
Я пытался прочитать документацию по этому поводу - оставил меня еще более смущенным.