- 深入解析ASP核心技术
- 王洪影
- 395字
- 2023-01-30 16:29:04
2.3.3 二进制数据
写入二进制数据使用Write方法(即Type属性为2时使用),就一个参数,就是要写入的数据。读取二进制数据使用Read方法,参数是读取的字节数,省略则从当前位置一直读到流的末尾。
Write方法的参数要求是真正的二进制数据,使用ChrB方法拼接的二进制字符串是不行的。下面的范例使用了Request.BinaryRead()方法,以二进制方式读取表单提交的内容,它返回的正是一个字节数组。
StreamBinaryData.asp
<%@codepage=936%> <! --#include File="getMemoryFormat.asp" --> <% Response.Charset="GBK" %> <form method="post"> <input type="text" name="inputText" value="編碼"> <input type="submit" value="Go"> </form> <% If Request.TotalBytes > 0 Then Dim byteArray byteArray = Request.BinaryRead(Request.TotalBytes) response.write TypeName(byteArray) & "<br>" response.write VarType(byteArray) & "<br>" response.write "接收的数据:" & getMemoryFormat(byteArray) & "<br>" Dim stream Set stream = Server.CreateObject("ADODB.Stream") stream.Type = 1 '二进制方式 stream.Open stream.Write byteArray '写入二进制数据 stream.Position = 0 '移动指针到位置0 response.write "流中的数据:" & getMemoryFormat(stream.Read) & "<br>" stream.Position = 0 '移动指针到位置0 stream.Type = 2 '变更为文本方式 stream.Charset="GBK" response.write stream.ReadText '输出文本 stream.close Set stream = nothing End If %>
运行结果如图2-18所示。
图2-18 二进制数据处理范例
从运行结果可以看出,二进制数据是原样写入的,没有任何变化。
此例中,我们先写入二进制数据,然后变更为文本方式,按GBK编码读取文本,从而实现了二进制数据到文本的转换,这正是Stream对象的一大用途。