我正在尝试将文件附加到电子邮件,但在postFile.InputStream中到达MemoryStream的方法CopyTo时,出现此错误。
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
});
}
}```
尝试使类属性为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()
};
}