C#-将流保存在类变量中并将其传递给函数

时间:2018-10-22 18:33:02

标签: c# ftp stream

我对此有严重的麻烦。我有一个功能,要求由附加功能读取和返回的流。该流属于一个PNG图像,该图像在表单上的图片框中描绘为背景图像。效果很好,但是我想将流数据保存在变量streamInfo中的类streamData中,以便以后可以将其传递给另一个函数,该函数使我可以上传流或图片到FTP服务器的其他位置。当我将流作为参数传递时,收到错误

  

流不可读

如果我尝试在控制台中输出流数据,它只会显示System.Net.FtpdataStream

如何保存返回的Stream(最好在类中而不进行转换或编码),然后将其传递给另一个函数,使其仍然可读并可以作为上载参数传递?

这是主要功能:

                if (content.Contains(box.SelectedItem.ToString()))
                {                      
                    stream = request_Preview_Image("somePath" + content);
                    this.imagePreview.BackgroundImage = Image.FromStream(stream);
                    blitzStream.streamData = stream;
                    blitzStream.streamName = content;
                }

这是所谓的函数:

        Stream request_Preview_Image(string create)
        {
            FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create("ftp://someFTP" + create);
            ftp.Credentials = someCredentials;
            ftp.Method = WebRequestMethods.Ftp.DownloadFile;
            FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
            try
            {
                return (Stream)response.GetResponseStream();
            }
            catch
            {
                return (Stream)null;
            }
        }

这是课程:

    private class streamInfo
    {
        public string streamName { get; set; } = null;
        public Stream streamData { get; set; } 
    }

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您试图存储流的内容以便以后以流形式进行检索,则可以使用以下命令:How do I copy the contents of one stream to another?。听起来好像您正在创建对该流的引用,但是在创建引用与尝试保存它之间的某个位置,您正在使用流来例如读取内容,或者关闭它。 但是将这样的图像流放在Web服务器的内存中是不好的做法。您的网站无法使用这种方法进行扩展。