主题:如何把截取出来二进制字节 保存为文件呢。
我用如下代码截取到字节:
<%
totalSize = Request.TotalBytes
biData = Request.BinaryRead( totalSize )
nPosEnd = InstrB(1, biData, ChrB(13)) '查找第一个回车所在位置
'从第一个回车后在开始查找+2是因为字节的原因
nPosEnd2 = InstrB(nPosEnd+2 , biData, ChrB(13)) '查找第二个回车所在位置
nPosEnd3 = InstrB(nPosEnd2+2 , biData, ChrB(13)) '查找第三个回车所在位置
nPosEnd4 = InstrB(nPosEnd3+2 , biData, ChrB(13)) '查找第四个回车所在位置
nPosEnd5 = InstrB(nPosEnd4+2 , biData, ChrB(13)) '查找第五个回车所在位置
vDisposition =midb(biData,nPosEnd + 2 ,nPosEnd2-nPosEnd-2 ) '截取文件名(第一个与第二个回车之间)
vDisposition2 =midb(biData,nPosEnd2+2,nPosEnd3-nPosEnd2-2) '截取文件格式(第二个与第三个之间)
vDisposition3 =midb(biData,nPosEnd4+2,nPosEnd5-nPosEnd4-2) '截取文件正文(第四个与第五个之间)
Private Function CWideString(bsString) '字节转换字符代码
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) '查找没个字节并用chr转换成字符 AscB 返回首字节对应的 ANSI 字符代码
Next
End Function
response.write nposend &"<Br>"
response.write nPosEnd2&"<BR>"
response.write nPosEnd3&"<BR>"
response.write nPosEnd4&"<BR>"
response.write nPosEnd5&"<BR>"
response.write CWideString(vDisposition)&"<BR>"
response.write CWideString(vDisposition2)&"<BR>"
response.write CWideString(vDisposition3)&"<BR>"
Set tmpStream = Nothing %>
截取是正确的,
因为我把一个12345的文本文档上传网页会显示12345
但是我怎么把这么一个字节文件vDisposition3保存出来成为一个文件呢.
我试着用:
Set tmpStream = Server.CreateObject("ADODB.Stream")
tmpStream.Type = 1
tmpStream.Open
tmpStream.Write vDisposition3 '将截数据 装入对像
stream.SaveToFile server.MapPath("./temp/01.txt")
但是这个没用提示错误:
错误类型:
ADODB.Stream (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/文件上传/分割二进制文件/upload.asp, 第 16 行
16行就是这句:tmpStream.Write vDisposition3 这句是把数据装载进stream中
怎么会装载不进去啊.
高手高手来求救下啊.............
<%
totalSize = Request.TotalBytes
biData = Request.BinaryRead( totalSize )
nPosEnd = InstrB(1, biData, ChrB(13)) '查找第一个回车所在位置
'从第一个回车后在开始查找+2是因为字节的原因
nPosEnd2 = InstrB(nPosEnd+2 , biData, ChrB(13)) '查找第二个回车所在位置
nPosEnd3 = InstrB(nPosEnd2+2 , biData, ChrB(13)) '查找第三个回车所在位置
nPosEnd4 = InstrB(nPosEnd3+2 , biData, ChrB(13)) '查找第四个回车所在位置
nPosEnd5 = InstrB(nPosEnd4+2 , biData, ChrB(13)) '查找第五个回车所在位置
vDisposition =midb(biData,nPosEnd + 2 ,nPosEnd2-nPosEnd-2 ) '截取文件名(第一个与第二个回车之间)
vDisposition2 =midb(biData,nPosEnd2+2,nPosEnd3-nPosEnd2-2) '截取文件格式(第二个与第三个之间)
vDisposition3 =midb(biData,nPosEnd4+2,nPosEnd5-nPosEnd4-2) '截取文件正文(第四个与第五个之间)
Private Function CWideString(bsString) '字节转换字符代码
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) '查找没个字节并用chr转换成字符 AscB 返回首字节对应的 ANSI 字符代码
Next
End Function
response.write nposend &"<Br>"
response.write nPosEnd2&"<BR>"
response.write nPosEnd3&"<BR>"
response.write nPosEnd4&"<BR>"
response.write nPosEnd5&"<BR>"
response.write CWideString(vDisposition)&"<BR>"
response.write CWideString(vDisposition2)&"<BR>"
response.write CWideString(vDisposition3)&"<BR>"
Set tmpStream = Nothing %>
截取是正确的,
因为我把一个12345的文本文档上传网页会显示12345
但是我怎么把这么一个字节文件vDisposition3保存出来成为一个文件呢.
我试着用:
Set tmpStream = Server.CreateObject("ADODB.Stream")
tmpStream.Type = 1
tmpStream.Open
tmpStream.Write vDisposition3 '将截数据 装入对像
stream.SaveToFile server.MapPath("./temp/01.txt")
但是这个没用提示错误:
错误类型:
ADODB.Stream (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/文件上传/分割二进制文件/upload.asp, 第 16 行
16行就是这句:tmpStream.Write vDisposition3 这句是把数据装载进stream中
怎么会装载不进去啊.
高手高手来求救下啊.............