回 帖 发 新 帖 刷新版面

主题:[讨论]ASP无组件上传文件的若干问题

以下的代码是实现将传过来的文件的真实数据读出来
<%
dim chunkdate,postdate,readeddate,f1,f2
dim formsize,totaldate,datesize,mydate,clfB,divstr,btag,etag
chunkdate=1024
readeddate=0
formsize=Request.TotalBytes
set f1=server.CreateObject("adodb.stream")
f1.open
f1.type=1
if formsize <= chunkdate then 
 f1.Write Request.BinaryRead(formsize)
else
 Do 
  f1.Write Request.BinaryRead(chunkdate)
  readeddate = readeddate + chunkdate
  if (readeddate+chunkdate) > formsize then exit do
 Loop
  f1.Write Request.BinaryRead(formsize-readeddate)
end if
f1.position=0
totaldate=f1.read()
'以上的程序是分快存储文件

clfB= chrB(13)&chrB(10)
divstr=leftb(totaldate,clng(instrb(tataldate,clfB)-1))
btag=clng(instrb(totaldate,clfB&clfB))+4'文件开始位置
etag=clng(instrb(btag,totaldate,divstr))-2'文件结束位置,因为还有一个分段号
datesize=etag-bstag
mydate=midb(tataldate,btag,datesize)
'以上的程序是把文件信息分离出来
f1.close
set f1=nothing
%>
但是在倒数第8句出错了,我后来将instrb(tataldate,clfB)的值写出来,是0。不知道为什么。
还有,关于分块存储的程序,别人类似的是这样写的
LngReadSize = 0
p_ChunkByte = 102400 ' 此处取值不可超过Win2003的IIS设置,推荐为100K
Response.Flush()
Do
        BinForm.Write Request.BinaryRead(p_ChunkByte)
        LngReadSize = LngReadSize + p_ChunkByte
        If LngReadSize >= LngRequestSize Then Exit Do
Loop
BinForm.Position = 0
BinRequestData = BinForm.Read() ' 拷贝表单数据流
我觉得这样的话,数据可能多取,不精确啊,希望高手能帮我解答,我的QQ号是39799211,几乎18小时在线
谢谢

回复列表 (共2个回复)

沙发

instrb(tataldate,clfB) = 0 这不太可能,建议你还是再好好看看

板凳

你能告诉我上传的文件到服务器段上什是么样的格式吗?比如:是不是文件一定是在数据流的最前面。还有用FILE,要不要另外在添加组件

我来回复

您尚未登录,请登录后再回复。点此登录或注册