Сценарий: у меня есть вызывающее клиентское приложение, которое, в конце концов, сгенерирует .pdf, который нужно отправить по электронной почте. Я создал приложение aspcore mvc, которое действует как электронная почта composer. Одно из действий принимает параметры электронной почты, например Кому, Cc .. et c, и предварительно заполняет часть или всю форму электронной почты, чтобы они могли просмотреть и нажать «Отправить».
Проблема: я пытается передать путь к файлу, который будет использоваться в форме в качестве вложения. Я также не думаю, что это самый безопасный способ сделать это, поскольку это может привести к множественным уязвимостям безопасности.
Поддержка моих вложений из моего класса электронной почты:
public List<IFormFile> Attachments { get; set; }
Если вызывающее приложение не передало путь к файлу вложения, пользователь может использовать поле ввода файла, чтобы выбрать его вручную. Это прекрасно работает. Однако, если путь к файлу отправляется, я не могу заставить его предварительно заполнить поле ввода файла, как я делаю с остальной частью формы.
if (attachment != null)
{
var fileBytes = System.IO.File.ReadAllBytes(attachment);
MemoryStream ms = new MemoryStream();
ms.Write(fileBytes, 0, fileBytes.Length);
var result = new FileStreamResult(ms, "application/pdf");
IFormFile file = new FormFile(result.FileStream, 0, result.FileStream.Length, "filename", "filename.pdf")
{
Headers = new HeaderDictionary(),
ContentType = "application/pdf",
};
attachmentList.Add(file);
}
Затем я добавляю его в свою модель для передачи в представление для предварительного заполнения.
Не могли бы вы предложить рабочий способ достижения того, что мне нужно? и или предложите различные способы достижения этой цели.
Спасибо!