<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Just is here--恰恰在这里 &#187; asp upload</title>
	<atom:link href="http://ishere.cn/tag/asp-upload/feed" rel="self" type="application/rss+xml" />
	<link>http://ishere.cn</link>
	<description>Jena&#039;s blog</description>
	<lastBuildDate>Sat, 14 Apr 2012 07:27:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>风声无组件上传类修改版</title>
		<link>http://ishere.cn/2008/12/01/%e9%a3%8e%e5%a3%b0%e6%97%a0%e7%bb%84%e4%bb%b6%e4%b8%8a%e4%bc%a0%e7%b1%bb%e4%bf%ae%e6%94%b9%e7%89%88.html</link>
		<comments>http://ishere.cn/2008/12/01/%e9%a3%8e%e5%a3%b0%e6%97%a0%e7%bb%84%e4%bb%b6%e4%b8%8a%e4%bc%a0%e7%b1%bb%e4%bf%ae%e6%94%b9%e7%89%88.html#comments</comments>
		<pubDate>Mon, 01 Dec 2008 07:51:43 +0000</pubDate>
		<dc:creator>jena</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[asp upload]]></category>

		<guid isPermaLink="false">http://www.ishere.cn/?p=463</guid>
		<description><![CDATA[这次修改的更新主要是增加了对保存目标路径的判断，如果不存在，就自动生成，SavePath的参数支持相对路径和绝对路径 uploadclass 下面把代码贴出来 &#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#8216;**************** 风声无组件上传类 2.11 ***************** &#8216;作者：风声 &#8216;网站：http://www.fonshen.com &#8216;邮件：webmaster@fonshen.com &#8216;版权：版权全体,源代码公开,各种用途均可免费使用 &#8216;修改：迦楠 &#8216;网站：http://www.ishere.cn &#124; http://www.aobodo.com &#8216;说明：SavePath参数支持相对与绝对两种路径,并自动生成目标文件夹 &#8216;********************************************************** &#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- Class UpLoadClass Private m_TotalSize,m_MaxSize,m_FileType,m_SavePath,m_AutoSave,m_Error,m_Charset Private m_dicForm,m_binForm,m_binItem,m_strDate,m_lngTime Private m_Fso,astrPath, ulngPath, i, strTmpPath Public FormItem,FileItem Public Property Get Version Version=”Fonshen UpLoadClass Version 2.11&#8243; &#8230; <a href="http://ishere.cn/2008/12/01/%e9%a3%8e%e5%a3%b0%e6%97%a0%e7%bb%84%e4%bb%b6%e4%b8%8a%e4%bc%a0%e7%b1%bb%e4%bf%ae%e6%94%b9%e7%89%88.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这次修改的更新主要是增加了对保存目标路径的判断，如果不存在，就自动生成，SavePath的参数支持相对路径和绝对路径<br />
<a href="http://www.ishere.cn/wp-content/uploads/2008/12/uploadclass.rar">uploadclass</a><br />
下面把代码贴出来</p>
<p>&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
&#8216;****************  风声无组件上传类 2.11  *****************<br />
&#8216;作者：风声<br />
&#8216;网站：http://www.fonshen.com<br />
&#8216;邮件：webmaster@fonshen.com<br />
&#8216;版权：版权全体,源代码公开,各种用途均可免费使用<br />
&#8216;修改：迦楠<br />
&#8216;网站：http://www.ishere.cn | http://www.aobodo.com<br />
&#8216;说明：SavePath参数支持相对与绝对两种路径,并自动生成目标文件夹<br />
&#8216;**********************************************************<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Class UpLoadClass</p>
<p>Private m_TotalSize,m_MaxSize,m_FileType,m_SavePath,m_AutoSave,m_Error,m_Charset<br />
Private m_dicForm,m_binForm,m_binItem,m_strDate,m_lngTime<br />
Private m_Fso,astrPath, ulngPath, i, strTmpPath<br />
Public	FormItem,FileItem</p>
<p>Public Property Get Version<br />
Version=”Fonshen UpLoadClass Version 2.11&#8243;<br />
End Property</p>
<p><span id="more-463"></span></p>
<p>Public Property Get Error<br />
Error=m_Error<br />
End Property</p>
<p>Public Property Get Charset<br />
Charset=m_Charset<br />
End Property<br />
Public Property Let Charset(strCharset)<br />
m_Charset=strCharset<br />
End Property</p>
<p>Public Property Get TotalSize<br />
TotalSize=m_TotalSize<br />
End Property<br />
Public Property Let TotalSize(lngSize)<br />
if isNumeric(lngSize) then m_TotalSize=Clng(lngSize)<br />
End Property</p>
<p>Public Property Get MaxSize<br />
MaxSize=m_MaxSize<br />
End Property<br />
Public Property Let MaxSize(lngSize)<br />
if isNumeric(lngSize) then m_MaxSize=Clng(lngSize)<br />
End Property</p>
<p>Public Property Get FileType<br />
FileType=m_FileType<br />
End Property<br />
Public Property Let FileType(strType)<br />
m_FileType=strType<br />
End Property</p>
<p>Public Property Get SavePath<br />
SavePath=m_SavePath<br />
End Property<br />
Public Property Let SavePath(strPath)<br />
m_SavePath=Replace(strPath,chr(0),”")<br />
m_SavePath=AutoCreateFolder(m_SavePath)<br />
End Property</p>
<p>Public Property Get AutoSave<br />
AutoSave=m_AutoSave<br />
End Property<br />
Public Property Let AutoSave(byVal Flag)<br />
select case Flag<br />
case 0,1,2: m_AutoSave=Flag<br />
end select<br />
End Property</p>
<p>Private Sub Class_Initialize<br />
m_Error	   = -1<br />
m_Charset  = “utf-8&#8243;<br />
m_TotalSize= 0<br />
m_MaxSize  = 153600<br />
m_FileType = “jpg/gif”<br />
m_SavePath = “”<br />
m_AutoSave = 2<br />
Dim dtmNow : dtmNow = Date()<br />
m_strDate  = Year(dtmNow)&amp;Right(“0&#8243;&amp;Month(dtmNow),2)&amp;Right(“0&#8243;&amp;Day(dtmNow),2)<br />
m_lngTime  = Clng(Timer()*1000)<br />
Set m_binForm = Server.CreateObject(“ADODB.Stream”)<br />
Set m_binItem = Server.CreateObject(“ADODB.Stream”)<br />
Set m_dicForm = Server.CreateObject(“Scripting.Dictionary”)<br />
m_dicForm.CompareMode = 1<br />
Set m_Fso = Server.CreateObject(“Scripting.FileSystemObject”)<br />
End Sub</p>
<p>Private Sub Class_Terminate<br />
m_dicForm.RemoveAll<br />
Set m_dicForm = nothing<br />
Set m_binItem = nothing<br />
m_binForm.Close()<br />
Set m_binForm = nothing<br />
Set m_Fso = nothing<br />
End Sub</p>
<p>Public Function Open()<br />
Open = 0<br />
if m_Error=-1 then<br />
m_Error=0<br />
else<br />
Exit Function<br />
end if<br />
Dim lngRequestSize : lngRequestSize=Request.TotalBytes<br />
if m_TotalSize&gt;0 and lngRequestSize&gt;m_TotalSize then<br />
m_Error=5<br />
Exit Function<br />
elseif lngRequestSize&lt;1 then<br />
m_Error=4<br />
Exit Function<br />
end if</p>
<p>Dim lngChunkByte : lngChunkByte = 102400<br />
Dim lngReadSize : lngReadSize = 0<br />
m_binForm.Type = 1<br />
m_binForm.Open()<br />
do<br />
m_binForm.Write Request.BinaryRead(lngChunkByte)<br />
lngReadSize=lngReadSize+lngChunkByte<br />
if  lngReadSize &gt;= lngRequestSize then exit do<br />
loop<br />
m_binForm.Position=0<br />
Dim binRequestData : binRequestData=m_binForm.Read()</p>
<p>Dim bCrLf,strSeparator,intSeparator<br />
bCrLf=ChrB(13)&amp;ChrB(10)<br />
intSeparator=InstrB(1,binRequestData,bCrLf)-1<br />
strSeparator=LeftB(binRequestData,intSeparator)</p>
<p>Dim strItem,strInam,strFtyp,strPuri,strFnam,strFext,lngFsiz<br />
Const strSplit=”&#8216;”"&gt;”<br />
Dim strFormItem,strFileItem,intTemp,strTemp<br />
Dim p_start : p_start=intSeparator+2<br />
Dim p_end<br />
Do<br />
p_end = InStrB(p_start,binRequestData,bCrLf&amp;bCrLf)-1<br />
m_binItem.Type=1<br />
m_binItem.Open()<br />
m_binForm.Position=p_start<br />
m_binForm.CopyTo m_binItem,p_end-p_start<br />
m_binItem.Position=0<br />
m_binItem.Type=2<br />
m_binItem.Charset=m_Charset<br />
strItem = m_binItem.ReadText()<br />
m_binItem.Close()<br />
intTemp=Instr(39,strItem,”"”")<br />
strInam=Mid(strItem,39,intTemp-39)</p>
<p>p_start = p_end + 4<br />
p_end = InStrB(p_start,binRequestData,strSeparator)-1<br />
m_binItem.Type=1<br />
m_binItem.Open()<br />
m_binForm.Position=p_start<br />
lngFsiz=p_end-p_start-2<br />
m_binForm.CopyTo m_binItem,lngFsiz</p>
<p>if Instr(intTemp,strItem,”filename=”"”)&lt;&gt;0 then<br />
if not m_dicForm.Exists(strInam&amp;”_From”) then<br />
strFileItem=strFileItem&amp;strSplit&amp;strInam<br />
if m_binItem.Size&lt;&gt;0 then<br />
intTemp=intTemp+13<br />
strFtyp=Mid(strItem,Instr(intTemp,strItem,”Content-Type: “)+14)<br />
strPuri=Mid(strItem,intTemp,Instr(intTemp,strItem,”"”")-intTemp)<br />
intTemp=InstrRev(strPuri,”")<br />
strFnam=Mid(strPuri,intTemp+1)<br />
m_dicForm.Add strInam&amp;”_Type”,strFtyp<br />
m_dicForm.Add strInam&amp;”_Name”,strFnam<br />
m_dicForm.Add strInam&amp;”_Path”,Left(strPuri,intTemp)<br />
m_dicForm.Add strInam&amp;”_Size”,lngFsiz<br />
if Instr(strFnam,”.”)&lt;&gt;0 then<br />
strFext=Mid(strFnam,InstrRev(strFnam,”.”)+1)<br />
else<br />
strFext=”"<br />
end if</p>
<p>select case strFtyp<br />
case “image/jpeg”,”image/pjpeg”,”image/jpg”<br />
if Lcase(strFext)&lt;&gt;”jpg” then strFext=”jpg”<br />
m_binItem.Position=3<br />
do while not m_binItem.EOS<br />
do<br />
intTemp = Ascb(m_binItem.Read(1))<br />
loop while intTemp = 255 and not m_binItem.EOS<br />
if intTemp &lt; 192 or intTemp &gt; 195 then<br />
m_binItem.read(Bin2Val(m_binItem.Read(2))-2)<br />
else<br />
Exit do<br />
end if<br />
do<br />
intTemp = Ascb(m_binItem.Read(1))<br />
loop while intTemp &lt; 255 and not m_binItem.EOS<br />
loop<br />
m_binItem.Read(3)<br />
m_dicForm.Add strInam&amp;”_Height”,Bin2Val(m_binItem.Read(2))<br />
m_dicForm.Add strInam&amp;”_Width”,Bin2Val(m_binItem.Read(2))<br />
case “image/gif”<br />
if Lcase(strFext)&lt;&gt;”gif” then strFext=”gif”<br />
m_binItem.Position=6<br />
m_dicForm.Add strInam&amp;”_Width”,BinVal2(m_binItem.Read(2))<br />
m_dicForm.Add strInam&amp;”_Height”,BinVal2(m_binItem.Read(2))<br />
case “image/png”<br />
if Lcase(strFext)&lt;&gt;”png” then strFext=”png”<br />
m_binItem.Position=18<br />
m_dicForm.Add strInam&amp;”_Width”,Bin2Val(m_binItem.Read(2))<br />
m_binItem.Read(2)<br />
m_dicForm.Add strInam&amp;”_Height”,Bin2Val(m_binItem.Read(2))<br />
case “image/bmp”<br />
if Lcase(strFext)&lt;&gt;”bmp” then strFext=”bmp”<br />
m_binItem.Position=18<br />
m_dicForm.Add strInam&amp;”_Width”,BinVal2(m_binItem.Read(4))<br />
m_dicForm.Add strInam&amp;”_Height”,BinVal2(m_binItem.Read(4))<br />
case “application/x-shockwave-flash”<br />
if Lcase(strFext)&lt;&gt;”swf” then strFext=”swf”<br />
m_binItem.Position=0<br />
if Ascb(m_binItem.Read(1))=70 then<br />
m_binItem.Position=8<br />
strTemp = Num2Str(Ascb(m_binItem.Read(1)), 2 ,8)<br />
intTemp = Str2Num(Left(strTemp, 5), 2)<br />
strTemp = Mid(strTemp, 6)<br />
while (Len(strTemp) &lt; intTemp * 4)<br />
strTemp = strTemp &amp; Num2Str(Ascb(m_binItem.Read(1)), 2 ,8)<br />
wend<br />
m_dicForm.Add strInam&amp;”_Width”, Int(Abs(Str2Num(Mid(strTemp, intTemp + 1, intTemp), 2) &#8211; Str2Num(Mid(strTemp, 1, intTemp), 2)) / 20)<br />
m_dicForm.Add strInam&amp;”_Height”,Int(Abs(Str2Num(Mid(strTemp, 3 * intTemp + 1, intTemp), 2) &#8211; Str2Num(Mid(strTemp, 2 * intTemp + 1, intTemp), 2)) / 20)<br />
end if<br />
end select</p>
<p>m_dicForm.Add strInam&amp;”_Ext”,strFext<br />
m_dicForm.Add strInam&amp;”_From”,p_start<br />
if m_AutoSave&lt;&gt;2 then<br />
intTemp=GetFerr(lngFsiz,strFext)<br />
m_dicForm.Add strInam&amp;”_Err”,intTemp<br />
if intTemp=0 then<br />
if m_AutoSave=0 then<br />
strFnam=GetTimeStr()<br />
if strFext&lt;&gt;”" then strFnam=strFnam&amp;”.”&amp;strFext<br />
end if<br />
m_binItem.SaveToFile m_SavePath&amp;strFnam,2<br />
m_dicForm.Add strInam,strFnam<br />
end if<br />
end if<br />
else<br />
m_dicForm.Add strInam&amp;”_Err”,-1<br />
end if<br />
end if<br />
else<br />
m_binItem.Position=0<br />
m_binItem.Type=2<br />
m_binItem.Charset=m_Charset<br />
strTemp=m_binItem.ReadText<br />
if m_dicForm.Exists(strInam) then<br />
m_dicForm(strInam) = m_dicForm(strInam)&amp;”,”&amp;strTemp<br />
else<br />
strFormItem=strFormItem&amp;strSplit&amp;strInam<br />
m_dicForm.Add strInam,strTemp<br />
end if<br />
end if</p>
<p>m_binItem.Close()<br />
p_start = p_end+intSeparator+2<br />
loop Until p_start+3&gt;lngRequestSize<br />
FormItem=Split(strFormItem,strSplit)<br />
FileItem=Split(strFileItem,strSplit)</p>
<p>Open = lngRequestSize<br />
End Function</p>
<p>Private Function GetTimeStr()<br />
m_lngTime=m_lngTime+1<br />
GetTimeStr=m_strDate&amp;Right(“00000000&#8243;&amp;m_lngTime,8)<br />
End Function</p>
<p>Private Function GetFerr(lngFsiz,strFext)<br />
dim intFerr<br />
intFerr=0<br />
if lngFsiz&gt;m_MaxSize and m_MaxSize&gt;0 then<br />
if m_Error=0 or m_Error=2 then m_Error=m_Error+1<br />
intFerr=intFerr+1<br />
end if<br />
if Instr(1,LCase(“/”&amp;m_FileType&amp;”/”),LCase(“/”&amp;strFext&amp;”/”))=0 and m_FileType&lt;&gt;”" then<br />
if m_Error&lt;2 then m_Error=m_Error+2<br />
intFerr=intFerr+2<br />
end if<br />
GetFerr=intFerr<br />
End Function</p>
<p>Public Function Save(Item,strFnam)<br />
Save=false<br />
if m_dicForm.Exists(Item&amp;”_From”) then<br />
dim intFerr,strFext<br />
strFext=m_dicForm(Item&amp;”_Ext”)<br />
intFerr=GetFerr(m_dicForm(Item&amp;”_Size”),strFext)<br />
if m_dicForm.Exists(Item&amp;”_Err”) then<br />
if intFerr=0 then<br />
m_dicForm(Item&amp;”_Err”)=0<br />
end if<br />
else<br />
m_dicForm.Add Item&amp;”_Err”,intFerr<br />
end if<br />
if intFerr&lt;&gt;0 then Exit Function<br />
if VarType(strFnam)=2 then<br />
select case strFnam<br />
case 0:strFnam=GetTimeStr()<br />
if strFext&lt;&gt;”" then strFnam=strFnam&amp;”.”&amp;strFext<br />
case 1:strFnam=m_dicForm(Item&amp;”_Name”)<br />
end select<br />
end if<br />
m_binItem.Type = 1<br />
m_binItem.Open<br />
m_binForm.Position = m_dicForm(Item&amp;”_From”)<br />
m_binForm.CopyTo m_binItem,m_dicForm(Item&amp;”_Size”)<br />
m_binItem.SaveToFile m_SavePath&amp;strFnam,2<br />
m_binItem.Close()<br />
if m_dicForm.Exists(Item) then<br />
m_dicForm(Item)=strFnam<br />
else<br />
m_dicForm.Add Item,strFnam<br />
end if<br />
Save=true<br />
end if<br />
End Function</p>
<p>Public Function GetData(Item)<br />
GetData=”"<br />
if m_dicForm.Exists(Item&amp;”_From”) then<br />
if GetFerr(m_dicForm(Item&amp;”_Size”),m_dicForm(Item&amp;”_Ext”))&lt;&gt;0 then Exit Function<br />
m_binForm.Position = m_dicForm(Item&amp;”_From”)<br />
GetData = m_binForm.Read(m_dicForm(Item&amp;”_Size”))<br />
end if<br />
End Function</p>
<p>Public Function Form(Item)<br />
if m_dicForm.Exists(Item) then<br />
Form=m_dicForm(Item)<br />
else<br />
Form=”"<br />
end if<br />
End Function</p>
<p>Private Function BinVal2(bin)<br />
dim lngValue,i<br />
lngValue = 0<br />
for i = lenb(bin) to 1 step -1<br />
lngValue = lngValue *256 + Ascb(midb(bin,i,1))<br />
next<br />
BinVal2=lngValue<br />
End Function</p>
<p>Private Function Bin2Val(bin)<br />
dim lngValue,i<br />
lngValue = 0<br />
for i = 1 to lenb(bin)<br />
lngValue = lngValue *256 + Ascb(midb(bin,i,1))<br />
next<br />
Bin2Val=lngValue<br />
End Function</p>
<p>Private Function Num2Str(num, base, lens)<br />
Dim ret,i<br />
ret = “”<br />
while(num &gt;= base)<br />
i   = num Mod base<br />
ret = i &amp; ret<br />
num = (num &#8211; i) / base<br />
wend<br />
Num2Str = Right(String(lens, “0&#8243;) &amp; num &amp; ret, lens)<br />
End Function</p>
<p>Private Function Str2Num(str, base)<br />
Dim ret, i<br />
ret = 0<br />
for i = 1 to Len(str)<br />
ret = ret * base + Cint(Mid(str, i, 1))<br />
next<br />
Str2Num = ret<br />
End Function</p>
<p>Private Function AutoCreateFolder(strPath)<br />
On Error Resume Next<br />
If InStr(strPath, “”) &lt;=0 or InStr(strPath, “:”) &lt;= 0 Then<br />
strPath = Server.MapPath(strPath)<br />
End If<br />
If m_Fso.FolderExists(strPath) Then<br />
AutoCreateFolder = strPath<br />
Exit Function<br />
End If<br />
astrPath = Split(strPath, “”)<br />
ulngPath = UBound(astrPath)<br />
strTmpPath = “”<br />
For i = 0 To ulngPath<br />
strTmpPath = strTmpPath &amp; astrPath(i) &amp; “”<br />
If Not m_Fso.FolderExists(strTmpPath) Then<br />
m_Fso.CreateFolder(strTmpPath)<br />
End If<br />
Next<br />
AutoCreateFolder = strPath<br />
End Function</p>
<p>End Class</p>
]]></content:encoded>
			<wfw:commentRss>http://ishere.cn/2008/12/01/%e9%a3%8e%e5%a3%b0%e6%97%a0%e7%bb%84%e4%bb%b6%e4%b8%8a%e4%bc%a0%e7%b1%bb%e4%bf%ae%e6%94%b9%e7%89%88.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

