既然你不想保存成文件 为什么要用到 FileStream?

解决方案 »

  1.   

    想做什么操作,如果是读取的话,直接用 StreamReader 就可以了。
      

  2.   

    直接使用MemeryStream一样的,FileStream是必须和文件挂钩的,如果你的需求是流的读写,完全没必要转换到FileStream,直接对MemeryStream操作更好。
      

  3.   

    我要把流添加到Attachment ,这个构造函数虽然是说Stream都可以但我实际试过了Stream  \StreamReader\ MemeryStream都不能用。只有FileStream可以用,而且MSDN上也是这么演示的。朋友们,谢谢你们给我出主意,但这没意义。只有FileStream可用
      

  4.   

    把你的测试代码贴出来,并指出哪步通不过,对于可接受Stream类型的方法,没有指明必须是FileStream,那么任何类型的Stream都应该是可以的,有问题那只可能是自己代码处理上的问题。
      

  5.   

                                MemoryStream pathFileName = movejpg(comname); //得到一个带图片的内存流Attachment attachment = new Attachment(pathFileName,               System.Net.Mime.MediaTypeNames.Image.Jpeg);
                                attachment.Name = "测试";
                                attachment.NameEncoding = Encoding.UTF8;
                                attachment.ContentId = "afwewrw.jpg";
                                attachment.ContentDisposition.Inline = true;
                               pictureBox1.Image = Image.FromStream(MemoryStream);//这个图片显示正常                            message.Attachments.Add(attachment);   //这个就不正常,发邮的邮件,附件是0字节,把这个流改成一个FileStream并指向一个具体文件,马上就能正常显示
      

  6.   

    倒数第二句是pictureBox1.Image = Image.FromStream(pathFileName);//这个图片显示正常对不起,打错了
      

  7.   

    http://msdn.microsoft.com/zh-cn/library/ab7hb4y5.aspx这是MSDN上的示例
      

  8.   

    在你message.Attachments.Add(attachment);代码之前,先输出下pathFileName 的Position属性,这个属性必须是0才行,如果指向了流的末尾,那么就读取不到任何数据,最终就导致你发送的附件为0字节。
      

  9.   

    MemoryStream 应该是可以的。msdn也说了是: 一个包含附件内容的可读 Stream你可以把这句注释掉再看看:
      
      pictureBox1.Image = Image.FromStream(MemoryStream);//这个图片显示正常你要保证 MemoryStream.Position = 0 (从头开始)
      

  10.   

    注释掉: pictureBox1.Image = Image.FromStream(MemoryStream);或者 message.Attachments.Add(attachment); 之前,从新设置 MemoryStream.Position = 0;
      

  11.   

    原来 设置                 memoryStream.Position = 0;
    就好使了 哈哈 多谢