我对此有严重的麻烦。我有一个功能,要求由附加功能读取和返回的流。该流属于一个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; }
}
非常感谢!
答案 0 :(得分:1)
如果您试图存储流的内容以便以后以流形式进行检索,则可以使用以下命令:How do I copy the contents of one stream to another?。听起来好像您正在创建对该流的引用,但是在创建引用与尝试保存它之间的某个位置,您正在使用流来例如读取内容,或者关闭它。 但是将这样的图像流放在Web服务器的内存中是不好的做法。您的网站无法使用这种方法进行扩展。