我打开文件并将其读入流中,现在当我调用该方法时,我需要进一步传输该流,但出现错误 Stream != FileStream. 如何正确地将 FileStream 转换为 Stream 并将其传递给执行?
using (var fileStream = File.Open(file, FileMode.Open))
{
var buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
await _conversationsRepository.Attachment(new Attachment
{
Name = Path.GetFileName(file),
Stream = fileStream
});
}
public bool Attachment(Attachment attachment)
{
if (attachment.Stream == null)
{
return false;
}
if (string.IsNullOrWhiteSpace(attachment.Name))
{
return false;
}
if (attachment.Stream.Length > 30 * 1024 * 1024)
{
return false;
}
console.log("true");
return true;
}
这是课程本身:
using System;
using System.IO;
namespace Models
{
public class Attachment
{
public Stream Stream { get; set; }
public string Name { get; set; }
public AttachmentType Type { get; set; }
}
}
如果我这样做了,那么流仍然是空的。
var stream = Stream.Null;
fileStream.CopyTo(stream);
var stream2 = new MemoryStream();
fileStream.CopyTo(stream2);
问题通过以下方式解决:
Stream 是 FileStream 类的祖先,也就是说,您可以简单地进行向上转换。
UPD:试试这个:替换
在
创建一个内存流。
只要您的文件大小满足以下条件,这应该可以工作:> 30 * 1024 * 1024。
UPD:我想通了,最好直接把文件流传到附件里。
由于在内存中存储 30MB 是昂贵的。