【问题标题】:BinaryReader in VB.NET don't workVB.NET 中的 BinaryReader 不起作用
【发布时间】:2015-02-08 03:41:28
【问题描述】:

我写了一个代码来保存和显示照片并检查它的高度和宽度,但是当我使用“ReadBytes”方法添加识别宽度和高度的代码时它不保存和读取我的数据

Dim fs As Stream = FileUpload1.PostedFile.InputStream

            Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(fs)
            Dim height As Integer = img.Height
            Dim width As Integer = img.Width
            If Not (height < 201 And width < 201) Then
                Me.HsMsg1.MessageType = MessageType.Error
                Me.HsMsg1.Message = " 200*200"
                Me.HsMsg1.Visible = True
                Exit Sub
            End If

            Dim br As New BinaryReader(fs)

            Dim bytes = br.ReadBytes(fs.Length)
            Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length)
            imgDemo.ImageUrl = "data:image/jpeg;base64," & base64String
            imgDemo.Visible = True
            Session("bytes") = bytes

【问题讨论】:

  • 暗字节 = br.ReadBytes(CInt(fs.Length))

标签: asp.net vb.net iostream


【解决方案1】:

问题出在这一行:

Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(fs)

此行前进到流的末尾。当您稍后创建 BinaryReader 时,您将从流的末尾开始,并且没有任何内容可读取!

我不记得 FileUpload 控件使用的流是否支持搜索(查看 CanSeek 属性以找出答案),但如果支持,您需要使用 Seek() 方法返回流的开始。如果没有,您需要use your img variable as the source to create your byte array... 无论如何这可能是更好的选择。

【讨论】:

  • 感谢您的帮助 :) 我添加了以下代码:fs.Seek(0, SeekOrigin.Begin)
猜你喜欢
  • 2017-05-25
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多