Как прикрепить файл к электронной почте, скопировав файлы из HttpPostedFileBase в MemoryStream? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь прикрепить файлы к электронной почте, но при достижении метода CopyTo в postFile.InputStream to MemoryStream я получаю эту ошибку.

StackTrace = " at System.IO.__Error.FileNotOpen()\r\n at System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin)\r\n at System.IO.Stream.InternalCopyTo(Stream destination, Int32 bufferSize)\r\n at Test.Web.Extensions.EpiserverForms

                {
                    HttpPostedFileBase postedFile = this.HttpRequestContext.Files[i];
                    postedFile.InputStream.Position = 0;
                    postedFile.InputStream.Seek(0, SeekOrigin.Begin);

                    using (MemoryStream memoryStream = new MemoryStream())
                    {
                        postedFile.InputStream.CopyTo(memoryStream);
                        memoryStream.Position = 0;
                        memoryStream.Seek(0, SeekOrigin.Begin);

                        uploadedFiles.Add(
                            new UploadedFile()
                            {
                                Name = postedFile.FileName,
                                Type = MimeMapping.GetMimeMapping(postedFile.FileName),
                                InputStream = memoryStream
                            });
                    }
                }```

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Исправлено путем удаления

postedFile.InputStream.Position = 0;
postedFile.InputStream.Seek(0, SeekOrigin.Begin);
0 голосов
/ 24 января 2020

Попробуйте сделать свойство класса UploadedFile.InputBytes - байтами, а не потоком. Затем вы можете распространять файл следующим образом:

    using (var memoryStream = postedFile.InputStream as MemoryStream)
    {
        if (memoryStream == null)
            postedFile.InputStream.CopyTo(memoryStream);

        new UploadedFile()
        {
            Name = postedFile.FileName,
            Type = MimeMapping.GetMimeMapping(postedFile.FileName),
            InputBytes = memoryStream?.ToArray()
        };
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...