现在的位置: 首页 > 综合 > 正文

Asp无组件上传带进度条(续)

2013年06月14日 ⁄ 综合 ⁄ 共 14989字 ⁄ 字号 评论关闭
文章目录

几个月前,写过一篇关于Asp无组件上传带进度条的Blog,当时主要分析了一下通过Web文件上传并在后台获取分析数据的实现原理。其中实现进度条的根本就是要实现分块获取数据,根据分块大小和块数记录已上传大小。还有一些具体的细节问题当时并没有说清楚:

Q: 进度信息如何访问?
A: 进度信息保存在Application中,每次上传时生成一个进度ID,根据这个进度ID可以检索Application中的当前上传进度信息。

Q: 进度信息以什么形式保存在Application中?
A: Asp太弱了,我分别试过Scripting.Dictionary和XMLDom,但是Asp中Application不能保存这种对象,要是asp.net就直接可以用Hashtable了。最后是在Application中用一个ADODB.Recordset对象来保存进度相关信息。

Q: 怎么保证的页面能即时反应显示进度条信息?
A:
文件开头加上声明来关闭会话状态
要保证禁用缓存:
 Response.CacheControl = "no-cache"
 Response.Expires = -1

Q: 可以上传多大文件?
A: 这个和网速,服务器内存等多方面因素有关,将Server.ScriptTimeout设置足够长,那么理论上可以和服务器保持连接很长时间。因为在asp中,不能实现对文件的“追加”写入,必须将所有待写入文件的数据都先保存在内存,这样如果上传大文件,那么将很占用服务器内存(文本文件可以使用TextStream.Write追加写入)。在asp.net下就比较爽了,分块读取的时候,每读一块分析一块,然后将上传文件的数据内容“追加”写入硬盘文件中,对内存占用很小很小。一般几十MB的文件还是没问题,太大的上传其实对于web下也不是很有意义。

写了一个比较完善的实例,可以直接下载使用:

演示下载

发表于 2004年12月16日 11:45

评论

# re: Asp无组件上传带进度条(续)

请教一下,如下一个例子
<%
TotalBytes = Request.TotalBytes
if totalbytes>2000000 then
xxxxxx
end if
%>
当执行到xxxxxx的时候,死活出现“该页无法显示”的错误,只有在if之前先执行request.binaryread之后,才不会出现错误,但这样以来就要耗去相当长的时间,看你的例子好像也有这个问题。不知有什么办法

2004-12-20 3:41 | dcime

# re: Asp无组件上传带进度条(续)

没说清楚,是要把TotalBytes个字节全部binaryread之后,执行下面的条件语句才不会出错,如果没读或读了一部分就出错,使用Err.raise方法也没什么用

2004-12-20 23:23 | dcime

# re: Asp无组件上传带进度条(续)

我没能解决这个问题:(

2004-12-20 23:33 | 宝玉

# re: Asp无组件上传带进度条(续)

我下载了这个组件,非常好用,我用它的原理做了一个可以将服务器端做的处理情况实时反映到客户端的类, 就是在服务器上处理10000条记录时在客户端可以显示出 1/10000,2/10000... ... 9999/10000 这种表示,我已经做出来了,核心部分当然是用这个组件的原理,但现在有一个问题,就是在服务器重启后,第一次运行不能动态显示,但服务器上仍在处理,处理完后,再一次运行就可以有我要的显示效果了,只要不关机或重启机器,就都好用,不知是为什么,如果你有时间,能否帮我看一下代码?我的Email: ztyabc@163.com,先谢谢了.

2005-5-26 4:47 | zty

# re: Asp无组件上传带进度条(续)

OK,有空帮你看看!
我msn: junmiuliu@msn.com

2005-5-26 4:50 | dotey

# re: Asp无组件上传带进度条(续)

宝玉你好,我已将有问题的代码发送到你的信箱中了,请查收,另告知我的机器环境:
C2:850,815,512MB,40G
中文Win2k Server ,IE 6.0,IIS
希望以后能和你多多交流,向你学习.谢谢.

2005-5-26 20:13 | zty

# re: Asp无组件上传带进度条(续)

没收到!

2005-5-26 21:17 | dotey

# re: Asp无组件上传带进度条(续)

我的是163的信箱,是不是不能和你的信箱通信,我的信被退回了,我又发了一遍。
或者告诉我你的QQ,我明天上午再和你联系。
我的QQ:195905179 十晓生
谢谢

2005-5-27 4:50 | zty

# re: Asp无组件上传带进度条(续)

我又申请了一个msn,号码为: dlxbdzty@hotmail.com
请你帮帮我,谢谢

2005-5-27 22:00 | zty

# re: Asp无组件上传带进度条(续)

UpdateOne.asp
======================
<!-- #include file="pubFun.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>R-Victorian</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<link rel="stylesheet" href="parts/style.css" type="text/css">

<script language="JavaScript">
<!--
var oXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
oXMLDoc.async = true;
var theUniqueID= 0;
var iTimerID=null;

function UploadData()
{

document.myform.action = "SendProgress.asp";
document.myform.target="upload"
document.myform.submit();

ProgressBar();
}

function ProgressBar()
{
sURL = "SendStatusXml.asp"
oXMLDoc.onreadystatechange = Function( "fnLoadComplete();" );
oXMLDoc.load( sURL );
}

function fnLoadComplete()
{
var iReadyState;
try
{
iReadyState = oXMLDoc.readyState;
}
catch(e)
{
document.myform.textSy.value = iReadyState;
return;
}
if( iReadyState != 4 )
{
document.myform.textSy.value = iReadyState;
return;
}

if( oXMLDoc == null || oXMLDoc.xml == "" )
{
window.status = 'Xml load fault';
return;
}

var oRoot = oXMLDoc.documentElement;
var strCurrentNo,strCurrentCl,strCurrentCount,strTitle;//,strJd;

if(oRoot != null)
{
if (oRoot.selectSingleNode("ErrorMessage") == null)
{

var readyState = oRoot.selectSingleNode("ReadyState").text;
if ( readyState == "UnInit" )
{
iTimerID = setTimeout("ProgressBar()", 300);
}

else if ( readyState == "Cling" )
{
document.myform.textFileA.value = oRoot.selectSingleNode("clsInfoA").text;
document.myform.textFileB.value = oRoot.selectSingleNode("clsInfoB").text;
document.myform.textFileC.value = oRoot.selectSingleNode("clsInfoC").text;
document.myform.textFileD.value = oRoot.selectSingleNode("clsInfoD").text;
iTimerID = setTimeout("ProgressBar()", 300);
}
else if ( readyState == "End" )
{
//showHideContent("tableJd",false);

alert("OK")
}
}
else
{
if (iTimerID != null)
clearTimeout(iTimerID)
iTimerID = null;
alert(oRoot.selectSingleNode("ErrorMessage").text);

}
}

}

function showHideContent(id, show)
{
var strId = new Array("textFileA","textFileB","textFileC","textFileD");
var nIdCount = 4;
var strDisp,strVis;
var elem,i;
if (show)
{
strDisp = 'block';
strVis = 'visible';
}
else
{
strDisp = 'none';
strVis = 'hidden';
}
elem = document.getElementById(id);
elem.style.display = strDisp;
elem.style.visibility = strVis;
}

//-->
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" link="820606" vlink="820606" alink="820606" >
<form name="myform" method="post" action="SendProgress.asp" enctype="multipart/form-data" target="upload">
<table>
<tr>
<td >
Index:
</td>
<td>
<input name="textFileA" type="text" id="textFileA" style=" background-color:transparent; color:#FF0033;border-width:0;text-align:center" value="-" readonly>
</td>
</tr>
<tr>
<td>
Record All Count:
</td>
<td>
<input name="textFileB" type="text" id="textFileB" style=" background-color:transparent; color:#FF0033;border-width:0;text-align:center" value="-" readonly>
</td>
</tr>
<tr>
<td>
Code in Current DB:
</td>
<td>
<input name="textFileC" type="text" id="textFileC" style=" background-color:transparent; color:#FF0033;border-width:0;text-align:center" value="-" readonly>
</td>
</tr>
<tr>
<td>
Record Count in Current DB
</td>
<td>
<input name="textFileD" type="text" id="textFileD" style=" background-color:transparent; color:#FF0033;border-width:0;text-align:center" value="-" readonly >
</td>
</tr>

<tr>
<td>
oXMLDoc.readyState
</td>
<td>
<input name="textSy" type="text" id="textSy" style=" background-color:transparent; color:#FF0033;border-width:0;text-align:center" value="-" readonly >
</td>
</tr>

</table>
<p><p>
<iframe name="upload" width="0%" height="0%" ></iframe>
<form>
</body>
<script language="javascript">
UploadData();
</script>

</html>

2005-5-27 22:02 | zty

# re: Asp无组件上传带进度条(续)

SendStatusXml.asp
======================
<%@EnableSessionState=False%>

<!-- #include file="SendStatus.asp" -->

<%
Response.CacheControl = "no-cache"
Response.Expires = -1
Response.ContentType = "text/xml"

Dim du, pi, progressID

Set du = new clsSendStatus
Set pi = du.GetProgressInfo()

Dim xmlDoc
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.loadXML "<ProgressInfo/>"
Set root = xmlDoc.documentElement

Dim eleclsInfoA, eleclsInfoB, eleclsInfoC, eleclsInfoD, eleclsInfoE,eleReadyState, eleErrorMessage
If Not IsEmpty(pi) Then

Set eleclsInfoA = xmlDoc.createElement("clsInfoA")
root.appendChild(eleclsInfoA)
eleclsInfoA.text = pi.clsInfoA

Set eleclsInfoB = xmlDoc.createElement("clsInfoB")
root.appendChild(eleclsInfoB)
eleclsInfoB.text = pi.clsInfoB

Set eleclsInfoC = xmlDoc.createElement("clsInfoC")
root.appendChild(eleclsInfoC)
eleclsInfoC.text = pi.clsInfoC

Set eleclsInfoD = xmlDoc.createElement("clsInfoD")
root.appendChild(eleclsInfoD)
eleclsInfoD.text = pi.clsInfoD

Set eleclsInfoE = xmlDoc.createElement("clsInfoE")
root.appendChild(eleclsInfoE)
eleclsInfoE.text = pi.clsInfoE

Set eleReadyState = xmlDoc.createElement("ReadyState")
root.appendChild(eleReadyState)
eleReadyState.text = pi.ReadyState

If pi.ErrorMessage <> "" Then
Set eleErrorMessage = xmlDoc.createElement("ErrorMessage")
root.appendChild(eleErrorMessage)
eleErrorMessage.text = pi.ErrorMessage
End If
Else
Set eleErrorMessage = xmlDoc.createElement("ErrorMessage")
root.appendChild(eleErrorMessage)
eleErrorMessage.text = "读取失败"
End If

response.write("<?xml version=""1.0"" encoding=""GB2312""?>"&xmlDoc.xml)

set du = nothing
set pi = nothing
set xmlDoc = nothing
set root = nothing

%>

2005-5-27 22:03 | zty

# re: Asp无组件上传带进度条(续)

SendStatus.asp
=====================
<%
'主要是以上传的组件为基础,去掉了一些东西.
Class clsSendStatus

Public ErrMsg
Private Info
public Progress
Private SendStatusProgressInfo

Private Sub Class_Initialize()

SendStatusProgressInfo = "DoteySendStatusProgressInfo"
ErrMsg = ""
Set Progress = New ProgressInfo
End Sub

Private Sub Raise(Message)
ErrMsg = ErrMsg & "[" & Now & "]" & Message & "<BR>"
Progress.ErrorMessage = Message
UpdateProgressInfo()

End Sub

public Sub UpdateProgressInfo()
Const adTypeText = 2, adDate = 7, adUnsignedInt = 19, adVarChar = 200
Application.Lock()

if IsEmpty(Application(SendStatusProgressInfo)) Then
Set Info = Server.CreateObject("ADODB.Recordset")
Set Application(SendStatusProgressInfo) = Info

Info.Fields.Append "fielInfoA", adVarChar,60
Info.Fields.Append "fielInfoB", adVarChar,60
Info.Fields.Append "fielInfoC", adVarChar,60
Info.Fields.Append "fielInfoD", adVarChar,60
Info.Fields.Append "fielInfoE", adVarChar,60
Info.Fields.Append "ReadyState", adVarChar, 60
Info.Fields.Append "ErrorMessage", adVarChar, 60

Info.Open
Info.AddNew
Else
Set Info = Application(SendStatusProgressInfo)

If (Info.EOF) Then
Info.AddNew
End If
End If

Info("fielInfoA") = Progress.InfoA
Info("fielInfoB") = Progress.InfoB
Info("fielInfoC") =Progress.InfoC
Info("fielInfoD") = Progress.InfoD
Info("fielInfoE") = Progress.InfoE
Info("ReadyState") = Progress.ReadyState
Info("ErrorMessage") = Progress.ErrorMessage
Info.Update
Application.UnLock

End Sub

Public Function GetProgressInfo()

Dim pi, Infos
Set pi = New ProgressInfo
If Not IsEmpty(Application(SendStatusProgressInfo)) Then
Set Infos = Application(SendStatusProgressInfo)
If Not Infos.Eof Then

pi.clsInfoA = trim(Infos("fielInfoA"))
pi.clsInfoB = trim(Infos("fielInfoB"))
pi.clsInfoC = trim(Infos("fielInfoC"))
pi.clsInfoD = trim(Infos("fielInfoD"))
pi.clsInfoE = Trim(Infos("fielInfoE"))
pi.ReadyState = Trim(Infos("ReadyState"))
pi.ErrorMessage = Trim(Infos("ErrorMessage"))
Set GetProgressInfo = pi

End If
End If
Set GetProgressInfo = pi
Set Infos = nothing
set pi = nothing
End Function

public sub KillMe()
Set Progress = nothing
Set Info = nothing
set Application(SendStatusProgressInfo) = nothing

Application.Contents.Remove SendStatusProgressInfo

end sub

End Class

Class ProgressInfo

Public ErrorMessage
Public ReadyState
'可以传回五个数据,可以随时添加
public clsInfoA
public clsInfoB
public clsInfoC
public clsInfoD
public clsInfoE

Private Sub Class_Initialize()
clsInfoA = ""
clsInfoB = ""
clsInfoC = ""
clsInfoD = ""
clsInfoE = ""
ReadyState = "UnInit"
ErrorMessage = ""
End Sub

Public Property Get InfoA
InfoA = clsInfoA
End Property

Public Property Get InfoB
InfoB = clsInfoB
End Property

Public Property Get InfoC
InfoC = clsInfoC
End Property

Public Property Get InfoD
InfoD = clsInfoD
End Property

Public Property Get InfoE
InfoE = clsInfoE
End Property

End Class

%>

2005-5-27 22:04 | zty

# re: Asp无组件上传带进度条(续)

SendProgress.asp
=====================
<!-- #include file="SendStatus.asp" -->
<!-- #include file="PubFun.asp" -->

<%

Server.ScriptTimeout = 9999

funCl() 'PubFun.asp中的主处理函数

%>

2005-5-27 22:04 | zty

# re: Asp无组件上传带进度条(续)

pubFun.asp
======================
<%
'ReadyState = "UnInit","Cling","End"
'未准备好,正在处理,处理结束

const pubStatusStep = 20

'处理的主函数
function funCl()
dim objSend
set objSend = new clsSendStatus

funClA(objSend)
funClB(objSend)
funClC(objSend)
funClD(objSend)
objSend.Progress.ReadyState = "End"
objSend.UpdateProgressInfo()

end function

'第一个处理函数
function funClA(t)
dim nCount
nCount = 100

dim i,j

for i = 0 to 10 '当前数据库记录数为10
for j = 0 to 6000 '模拟处理过程
if j mod pubStatusStep = 0 then 'J的每一个步进不需要都发送,否则太慢
t.Progress.ReadyState = "Cling"
t.Progress.clsInfoA = "0"
t.Progress.clsInfoB = nCount
t.Progress.clsInfoC = i
t.Progress.clsInfoD = 10
t.UpdateProgressInfo()
end if
next
next
end function

'funClB,funClC,funClD与 funClA 一样
function funClB(t)
dim nCount
nCount = 100

dim i,j,k

for i = 0 to 20
for j = 0 to 6000
if j mod pubStatusStep = 0 then
t.Progress.ReadyState = "Cling"
t.Progress.clsInfoA = "1"
t.Progress.clsInfoB = nCount
t.Progress.clsInfoC = i
t.Progress.clsInfoD = 20
t.UpdateProgressInfo()
end if
next
next
end function

function funClC(t)
dim nCount
nCount = 100
dim i,j,k
for i = 0 to 30
for j = 0 to 6000
if j mod pubStatusStep = 0 then
t.Progress.ReadyState = "Cling"
t.Progress.clsInfoA = "2"
t.Progress.clsInfoB = nCount
t.Progress.clsInfoC = i
t.Progress.clsInfoD = 30
t.UpdateProgressInfo()
end if
next
next
end function

function funClD(t)
dim nCount
nCount = 100

dim i,j,k

for i = 0 to 40
for j = 0 to 6000
if j mod pubStatusStep = 0 then
t.Progress.ReadyState = "Cling"
t.Progress.clsInfoA = "3"
t.Progress.clsInfoB = nCount
t.Progress.clsInfoC = i
t.Progress.clsInfoD = 40
t.UpdateProgressInfo()
end if
next
next

end function

%>

2005-5-27 22:05 | zty

# re: Asp无组件上传带进度条(续)

主文件是 UpdateOne.asp
执行它即可,请你在有空的时候帮我看一下,这个类如果能做的好用的话,就可以在服务器端处理大量的数据时可以返回给客户一个实时的信息,以免让用户以为死机了,还是有一定的实用价值的.谢谢了.

2005-5-27 22:09 | zty

# re: Asp无组件上传带进度条(续)

主文件是 UpdateOne.asp
执行它即可,请你在有空的时候帮我看一下,这个类如果能做的好用的话,就可以在服务器端处理大量的数据时可以返回给客户一个实时的信息,以免让用户以为死机了,还是有一定的实用价值的.谢谢了.

2005-5-27 22:09 | zty

# re:Asp无组件上传带进度条(续)

Asp无组件上传带进度条(续)ooeess

2005-6-14 4:58 | 气味检测仪

# re:Asp无组件上传带进度条(续)

Asp无组件上传带进度条(续)ooeess

2005-6-14 18:06 | 测汞

# re: Asp无组件上传带进度条(续)

如何利用ASP把图片上传到数据库

作者:tigerwen01 来源:PConline 加入时间:2004-11-30
ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境。通过ASP我们可以创建功能强大的动态的WEB应用程序。ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件。
  在日常工作中,例如开发一个“商品网上销售系统”吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时在文字的旁边有该商品的图片加以说明,这样顾客就可以对该商品有个系统的了解,对推销商品有很大的帮助。所以我们在开发系统时当然就要加入图片处理模块,即如何把图片上传到服务器(图片可以放在WEB服务器上某一个文件夹里也可以放在SQL Server服务器里)和如何让上传的图片在浏览器端显示出来,这都是开发人员要考虑到的问题。

  上传图片到服务器有多种方法,可以使用文件上传组件也可以使用纯ASP代码来实现。在CSDN的WEB版ASP上经常有网友问这样的问题“如何利用ASP把图片上传到数据库里”,为了方便CSDN需要了解这方面的知识,这篇文章将详细讲解使用ASP上传图片的做法并给出代码,以飨读者。

  首先了解一下在程序中用到的各种对象及其语法:

  1) Request.BinaryRead()方法

  ● 使用Request.BinaryRead()方法可以获取提交的文件数据

  ● 语法

  VarReValue= Request.BinaryRead(number)

  变量VarReValue返回值保存从客户端读取到的二进制数据;

  参数number指明要从客户端读取的二进制数据量的大小。

  2) Response.BinaryWrite()方法

  ● 使用Response.BinaryWrite()方法可以从数据库中获取图片数据并显示到客户端的浏览器中。

  ● 语法

  Response.BinaryWrite data

  参数data是要写进客户端浏览器中的二进制数据包。

  3) AppendChunk方法

  ● AppendChunk方法的作用是将二进制数据追加到Field或Parameter对象。

  ● 语法

  object.AppendChunk data

  参数data为要追加到Field或Parameter对象中的数据包。

  4) GetChunk方法

  ● GetChunk方法返回二进制数据的内容。

  ● 语法

  object. GetChunk(size)

  参数size指明要返回二进制数据的长度,可以是长整型表达式。

  5) Request.TotalBytes方法

  ● Request.TotalBytes方法返回从客户端读取到的数据的字节数,这个值跟上面所提到的number相对应,可以大于或等于number值。

  ● 语法

  number= Request.TotalBytes

  大体了解了一些方法及其使用方法后,接下来我们就开始设计数据库和相关编写代码了。

  第一步:数据库的设计(以Ms SQL Server7为例):

  Create table img --创建用来存储图片的表,命名为img

  (

  id int identity(1,1) not null,

  img image

  )

  第二步:程序编写,其中省略了用户输入界面,这里只给出很重要的两个文件即图片上传处理(processimg.asp)和显示图片(ShowImg.asp)文件。

  1) processimg.asp文件代码:

  〈%

  Response.Buffer=True

  ImageSize=Request.TotalBytes ‘获取提交数据量的总字节数

  ImageData=Request.BinaryRead(ImageSize) ‘保存从客户端读取到的数据

  ‘优化读取到的二进制数据

  BnCrLf=chrB(13)&chr(10)

  Divider=LeftB(ImageData,Clng(InstrB(ImageData, BnCrLf))-1)

  Dstart=InstrB(ImageData, BnCrLf& BnCrLf)+4

  Dend=InstrB(Dstart+1, ImageData, Divider)- Dstart

  MyData=MidB(ImageData, Dstart, Dend)

  ‘创建对象实例

  Set imgConn=Server.CreateObject(“ADODB.Connection”)

  StrConn=”Driver={SQL Server};Server=ServerName;”& _

“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”

  imgConn.open strConn

  Set Rs= Server.CreateObject(“ADODB.RecordSet”)

  Sql=”Select * From img Where id is null”
 
  Rs.open sql,imgConn,1,3

  ‘追加数据到数据库

  Rs.AddNew

  Rs(“img”).AppendChunk myData

  Rs.Update

  ‘关闭和释放对象

  Rs.close

  ImgConn.close

  Set Rs=Nothing

  Set ImgConn=Nothing

  %〉

  2) ShowImg.asp文件代码:

  〈%

  Response.Expires = 0

  Response.buffer=True

  Response.clear

  ‘创建对象实例

  Set imgConn=Server.CreateObject(“ADODB.Connection”)

  StrConn=”Driver={SQL Server};Server=ServerName;”& _

“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”

  imgConn.open strConn

  Set Rs= Server.CreateObject(“ADODB.RecordSet”)

  Sql=”Select img From img Where id=1” 这里的id可以使用Request(“id”)获得

  Rs.open sql,imgConn,1,1

  Response.ContentType=”image/*”

  Response.BinaryWrite Rs.(“img”).GetChunk(7500000)

  ‘关闭和释放对象

  Rs.close

  ImgConn.close

  Set Rs=Nothing

  Set ImgConn=Nothing

  %〉

  至此,本文对如何使用ASP上传图片的原理和示例都讲完了,有什么不妥的地方请各位指正,谢谢!同时希望本文能够确实能为需要这方面帮助的网友提供实质性的帮助

2005-6-30 5:51 | Clone oneself

# re: Asp无组件上传带进度条(续)

迫切想知道
"boundary=---------------------------7d429871607fe"
7d429871607fe这个数值是如何产生的呢?是由服务器端随时生成的还是由IE在本地随机生成的呀?提交时这个数值要通过服务器端验证无误后才能正确上传数据吗????!
请宝玉和各位前辈指教,我无法获取网站的boundary的值,获取的Content-Type标头值都是"Text/html"之类,而从来没有获取过“multipart/form-data; boundary=---------------------------7d429871607fe”这样的标头,恳请指教!!

2005-7-10 7:55 | 我是一只小小小菜鸟

# re:Asp无组件上传带进度条(续)

Asp无组件上传带进度条(续)ooeess

2005-7-23 13:21 | 红外热像仪

# 让asp.net默认的上传组件支持进度条反映

Ping Back来自:blog.csdn.net

抱歉!评论已关闭.