【问题标题】:Usage of Stream more than once多次使用 Stream
【发布时间】:2011-07-21 06:12:12
【问题描述】:

我正在尝试使用 HttpPostedFile.InputStream 将图像文件上传到存储库,并使用同一流调整为不同的缩略图大小。

  • 第 1 步。使用 Stream sm = HttpPostedFile.InputStream 我能够 上传文件成功。
  • 步骤 2. 使用相同的流将图像调整为不同的大小。 但我总是收到错误说正在使用流。

假设如果我跳过第 1 步并仅执行第 2 步,我可以将输入流(图像)调整为不同的大小。基本上它让我只使用一次 inputStream。

我怎样才能实现顺序处理第 1 步和第 2 步?

我确实尝试将 inputStream 存储到一个变量并为每个步骤使用单独的副本,但没有成功。

有人可以建议/帮助我吗?

非常感谢

【问题讨论】:

  • 显示问题的独立代码 sn-p 可能会有所帮助

标签: c# stream clone filestream


【解决方案1】:

您在重用之前确实将 Stream.Position 设置为 0?

通过存储在多个变量中,您可能只是复制了对内存中同一对象的引用。

【讨论】:

  • Thekip,我在重用之前没有将任何 stream.position 设置为 0。我该怎么做?
  • 第一次使用后重置流(位置是流上的一个属性)。
【解决方案2】:

如果您使用此流将多个不同的图像上传到服务器,您可能希望为要上传的每个文件打开一个新流,而不是尝试使用单个流上传所有文件。

【讨论】:

  • Jason,我正在使用一个流来上传每个文件。上传后,当我使用 same stream 调整图像大小时出错。
  • @ajay。最好的方法是首先将数据加载到 Image 对象中。然后您可以多次使用 Image,生成大量缩略图(有一个特定的 Image 方法可以为您执行此操作),并将其保存到上传流。尝试从同一个流中多次读取图像将是低效的,并且可能根本不起作用。
猜你喜欢
  • 2019-09-02
  • 2015-05-20
  • 2016-06-03
  • 2020-08-06
  • 2021-09-08
  • 1970-01-01
  • 2021-08-21
  • 2021-10-19
  • 2012-01-14
相关资源
最近更新 更多