| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:[原创]一段上传.txt文件的代码(附详细注释)
只看楼主 加入收藏
Anycall
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2005-12-20
收藏
 问题点数:0 回复次数:2 
[原创]一段上传.txt文件的代码(附详细注释)
<%
Dim Data,TotalSize,Datastr,Dstart,FileName,Bstart,B,Bend,PostData,C,Fstart,Fstr,Fend
TotalSize=Request.TotalBytes
Data=Request.BinaryRead(TotalSize)
set mystream=Server.CreateObject("ADODB.Stream")
mystream.Type=1 '1为二进制流
mystream.open
mystream.position=0
'-------------------------------------------
'读取二进制流
'-------------------------------------------
mystream.write(Data)
'-------------------------------------------
'转换成文本流
'-------------------------------------------
mystream.position=0 '------在改变模式的必须声明,否则报错
mystream.Type=2 '---------2为文本
mystream.charset="gb2312" '在Type=2的时候,须声明charset
Datastr=mystream.ReadText '
mystream.close
set mystream=nothing
'-------------------------------------------
'对文本流进行分离,分离出有效的上传数据
'-------------------------------------------
Dstart=InStr(Datastr,"text/plain")
Bstart=InStr(Datastr,"Content-Disposition")
C=chr(13)&chr(10) '-------------------------------换行符
B=Mid(Datastr,1,InStr(Datastr,C)-1) '-------------得到上传开始标识
Bend=Int(InStrRev(Datastr,B)) '-------------------得到上传结束标识的位置
lendata=Bend-Dstart '-----------------------------得到数据的长度
PostData=Mid(Datastr,Dstart,lendata) '------------得到有效的上传数据
PostData=Replace(PostData,"text/plain"&C&C,"") '--过滤掉两个换行字符
'------------------------------------------
'PostData就是我们分离出的有效的上传数据
'下面我们就用SavaToFile的方法把得到的有效的数据存到硬盘上
'------------------------------------------
set stream=Server.CreateObject("ADODB.Stream")
stream.Type=2
stream.mode=3
stream.open
stream.position=0
stream.writeText PostData,0 '--当stream对象的Type=2的时候,向它装入新的数据的时候须用[WriteText 数据,模式(0/1)]的方法
stream.position=0
stream.Type=1 '---------------以二进制流写文件速度上快

randomize
FileName=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&Int(rnd*10000+9000)&".txt" '得到随机文件名
stream.SaveToFile "D:\mp3\"&FileName,2 '可用Server.mappath("当前文件的名称")获取当前的服务器路径
stream.close
set stream=nothing
Response.Write("<script language='JavaScript'>alert('文件:"&FileName&"\n\n已经保存到:D:/mp3/"&FileName&"');</script>")
%>


以上是自己在看stream对象的时候自己写的一点小代码,功能简单,只能上传.txt文件
上传其它类型的文件的时候就会报错,不知道其它类型的文件上传的时候是怎么分离出有效的数据的.
如果哪位大虾有时间的话可以教偶一下,先谢了.
搜索更多相关主题的帖子: txt 二进制 注释 mystream 文件 
2006-04-06 10:34
snakelee
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-3-24
收藏
得分:0 

赞一个 哈哈

主要是如何对数据的分离


编程的路很坎坷 有时会迷茫 但我们已不再孤单 让我们携手通行 coding. - 开发者联盟
2006-04-06 11:31
Anycall
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2005-12-20
收藏
得分:0 
对啊,也看了一些上传的类,注释不多,看不是太懂
不知道对于图片还有其它的类型是怎么分离出来的.

2006-04-06 12:00
快速回复:[原创]一段上传.txt文件的代码(附详细注释)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016601 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved