asp文件上傳源碼
⑴ ASP上傳文件代碼
1、2可以解決,3有點復雜,我對無組件上傳也不是很熟悉,很久沒有碰過了,
建議你使用別人做好的上傳類,像無懼上傳類、稻香老農的化境asp無組件上傳類等都可以,有很多,都挺好用的。
關於1、2的問題可參照下面的解決辦法,因為你的代碼全寫在一行,讀起來太麻煩,所以我給拆開了。代碼如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>無標題文檔</title>
</head>
<body>
<%
Response.Expires=0
if Request.TotalBytes then
set a=createobject("adodb.stream")
a.Type=1
a.Open
a.write Request.BinaryRead(Request.TotalBytes)
a.Position=0
b=a.Read
c=chrB(13)&chrB(10)
d=clng(instrb(b,c))
e=instrb(d+1,b,c)
set f=createobject("adodb.stream")
f.type=1
f.open
a.Position=d+1
a.to f,e-d-3
f.Position=0
f.type=2
f.CharSet="GB2312"
g=f.readtext
f.Close
h=mid(g,instrRev(g,"\")+1,e)
i=instrb(b,c&c)+4
j=instrb(i+1,b,leftB(b,d-1))-i-2
if j <1 then
set f =nothing
set a =nothing
response.write "未選擇要上傳的文件<a href='?'>重新上傳</a>"
response.end
end if
f.Type=1
f.Open
a.Position=i-1
a.CopyTo f,j
f.SaveToFile server.mappath("/images/"& h),2 '上傳至「/images/」文件夾中
f.Close
set f=Nothing
a.Close
set a=Nothing
response.write "<a href="&Server.URlEncode(h)&">"&h&"</a>"
end if
%>
<script language="javascript">
function checkupload(){
if(document.upload_form.fe.value ==""){
alert("未選擇要上傳的文件");
return false;
}
}
</script>
<form name="upload_form" enctype="multipart/form-data" method="post" onsubmit="return(checkupload())">
<input type="file" name="fe">
<input type="submit" value="上傳" name="B1"></form>
</body>
</html>
⑵ asp上傳文件到伺服器的代碼怎麼寫
x0dx0a
x0dx0ax0dx0a⑶ 關於傳ASP源碼的具體步驟
一般用Filezilla 3.0.10這個比較好用
你要上傳到空間.
一般空間是以
db\
web\
log\
三個文件夾.
你只需要把Asp文件上傳到Web文件夾就可以了.
也有的服務商是wwwroot
相同的你上傳上去就可以了
點塵宏擊文件->新建->FTP站點
標簽隨便輸入你喜歡的名字
主機地址:輸入IP
...
設置好之後點擊登陸就行.
就可以看見本地文件和FTP文件.
在右邊遠程文件里李拍選擇你要上傳到哪兄羨的目錄
在本地文件上右鍵"上傳"就行
⑷ 急求ASP源碼:上傳文件大小限定,圖片尺寸自動調整
三個頁:選擇頁,上傳頁sub.asp,調用的代碼頁upload.inc,
我自己就在用這個,LZ給分吧
1瀏覽上傳:
<form action="sub.asp"迅擾雹 method="post" enctype="multipart/form-data" target="_self">
<input type="畝帆file" name="src" size="20" value="瀏覽">
<input type="submit" value="上傳" name="B1" IsShowProcessBar="True">
</form>
sub.asp 執行上傳並返回地址,同時保存文件名在session(ccc)中
<!--#include FILE="upload.inc"-->
<%
dim upload,file,formName,formPath,iCount,fileformat
set upload=new upload_F
function MakedownName()
dim fname
fname = now()
fname = replace(fname,"-","")
fname = replace(fname," ","")
fname = replace(fname,":","")
fname = replace(fname,"PM","")
fname = replace(fname,"AM","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
fname = int(fname) + int((10-1+1)*Rnd + 1)
MakedownName=fname
end function
formPath="upload/"
iCount=0
for each formName in upload.file ''列出所有上傳了的文件
set file=upload.file(formName) ''生成一個文件對象
fileformat=lcase(right(file.filename,4))
if fileformat=".asp" or fileformat=".htm" then
response.write"<script>alert('文件格式不對,請重新上傳!');location='"&request.ServerVariables("HTTP_REFERER")&"'</script>"
response.end
end if
if file.FileSize>0 then ''如果 FileSize > 0 說明有文件數據
newname=MakedownName()&"."&mid(file.FileName,InStrRev(file.FileName, ".")+1)
session("ccc")=newname
file.SaveAs Server.mappath(formPath&newname) ''保存李昌文件
iCount=iCount+1
else
response.write "<font style=FONT-SIZE:9pt>未找到文件 <A HREF=javascript:history.back(1)>重新上傳</A><font style=FONT-SIZE:9pt>"
response.end
end if
next
%>
<%
response.write "<a href='upload/"&newname&"' target=_blank>upload/"&newname&" </a>("&cint(file.FileSize/1024)&"K) 上傳成功!"
%>
<%
set file=nothing
set upload=nothing ''刪除此對象
%>
upload.inc 頁的代碼如下:
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
dim upfile_Stream
Class upload_F
dim Form,File,Version
Private Sub Class_Initialize
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version="upload Version 1.0"
if Request.TotalBytes<1 then Exit Sub
set Form=CreateObject("Scripting.Dictionary")
set File=CreateObject("Scripting.Dictionary")
set upfile_Stream=CreateObject("Adodb.Stream")
upfile_Stream.mode=3
upfile_Stream.type=1
upfile_Stream.open
upfile_Stream.write Request.BinaryRead(Request.TotalBytes)
vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
while iFormStart < iFormEnd
iStart=inString(iFormStart,"name=""")
iEnd=inString(iStart+6,"""")
mFormName=subString(iStart+6,iEnd-iStart-6)
iFileNameStart=inString(iEnd+1,"filename=""")
if iFileNameStart>0 and iFileNameStart<iFormEnd then
iFileNameEnd=inString(iFileNameStart+10,"""")
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
if iEnd>iStart then
mFileSize=iEnd-iStart-4
else
mFileSize=0
end if
set theFile=new FileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.add mFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
if iEnd>iStart then
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue=""
end if
form.Add mFormName,mFormValue
end if
iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
End Sub
Private Function subString(theStart,theLen)
dim i,c,stemp
upfile_Stream.Position=theStart-1
stemp=""
for i=1 to theLen
if upfile_Stream.EOS then Exit for
c=ascB(upfile_Stream.Read(1))
If c > 127 Then
if upfile_Stream.EOS then Exit for
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
End If
Next
subString=stemp
End function
Private Function inString(theStart,varStr)
dim i,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
for i=theStart to upfile_Stream.Size-theLen
if i>upfile_Stream.size then exit Function
upfile_Stream.Position=i-1
if AscB(upfile_Stream.Read(1))=AscB(midB(Str,1)) then
InString=i
for j=2 to theLen
if upfile_Stream.EOS then
inString=0
Exit for
end if
if AscB(upfile_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
InString=0
Exit For
end if
next
if InString<>0 then Exit Function
end if
next
End Function
Private Sub Class_Terminate
form.RemoveAll
file.RemoveAll
set form=nothing
set file=nothing
upfile_Stream.close
set upfile_Stream=nothing
End Sub
Private function GetFilePath(FullPath)
If FullPath <> "" Then
GetFilePath = left(FullPath,InStrRev(FullPath, "\"))
Else
GetFilePath = ""
End If
End function
Private function GetFileName(FullPath)
If FullPath <> "" Then
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
Else
GetFileName = ""
End If
End function
Private function toByte(Str)
dim i,iCode,c,iLow,iHigh
toByte=""
For i=1 To Len(Str)
c=mid(Str,i,1)
iCode =Asc(c)
If iCode<0 Then iCode = iCode + 65535
If iCode>255 Then
iLow = Left(Hex(Asc(c)),2)
iHigh =Right(Hex(Asc(c)),2)
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function
End Class
Class FileInfo
dim FormName,FileName,FilePath,FileSize,FileStart
Private Sub Class_Initialize
FileName = ""
FilePath = ""
FileSize = 0
FileStart= 0
FormName = ""
End Sub
Public function SaveAs(FullPath)
dim dr,ErrorChar,i
SaveAs=1
if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
if FileStart=0 or right(fullpath,1)="/" then exit function
set dr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
upfile_Stream.position=FileStart-1
upfile_Stream.to dr,FileSize
dr.SaveToFile FullPath,2
dr.Close
set dr=nothing
SaveAs=0
end function
End Class
</SCRIPT>
⑸ ASP文件上傳原理分析及實現實例
摘要 在基於/的應用環境中 上傳各種類型的文件一直是困擾用戶文件管理應用的難題之一 在HTTP中上傳文件有三種機制 RFC PUT和WebDAV 常用的實現方法是利用在RFC 中引入的一個新類型 File以及ADO Stream對象 本文對上述上傳方法及實現原理作了論述 並給出了具體解決實例 ASP FILE對象
當前 基於/模式的應用比較流行 當用戶需要將文件傳輸到上時 常用方法之一是運行FTP並將每個用戶的FTP默認目錄設為用戶的Web主目錄 這樣用戶就能運行FTP客戶程序並上傳文件到指定的 Web目錄 這就要求用戶必須懂得如何使用FTP客戶程序 因此 這種解決方案僅對熟悉FTP且富有經驗的用戶來說是可行的 如果我們能把文件上傳功能與Web集成 使用戶僅用Web就能完成上傳任務 這對於他們來說將是非常方便的 但是 一直以來 由於File System Object的僅能傳送文本文件的局限 所以ASP最大的難題就是文件上傳問題 下面介紹的就是如何在基於HTTP協議的網頁中實現文件的上傳
一 通過HTTP上傳的三種機制
通過HTTP上傳有三種機制 RFC PUT 和 WebDAV
PUT 是在HTTP 引入了一個新的HTTP動詞 當web收到一個HTTP PUT和對象名字 它將會驗證用戶 接收HTTP流的內容 並把它直接存入web 由於這可能會對一個web站點造成破壞 並且還會失去HTTP最大的優勢 可編程性 在PUT的情況下 自己處理請求 沒有空間讓CGI或者ASP應用程序介入 唯一讓你的應用程序捕獲PUT的方法是在低層操作 ISAPI過濾層 由於相應的原因 PUT的應用很有限
而WebDAV允許web內容的分布式拆吵認證與翻譯 它引入了幾種新的HTTP動詞 允許通過HTTP上傳 鎖定/解鎖 登記/檢驗web內容行御知 Office 中的 Save to web 就是通過WebDAV來實現的 如果你所感興趣的一切都是上傳內容 WebDAV應用得非常出色 它解決了很多問題 然而 如果你需要在你的web應用程序裡面上傳文件 WebDAV對你就毫無用處可言 象HTTP PUT一樣 那些WebDAV的動詞是被解釋的 而不是web應用程序 你需要工作在ISAPI過濾層來訪問WebDAV的這些動詞 並在你的應用程序中解釋內容
RFC () 最終被W C在HTML 中接受前 是作為一種建議標准 它是一種非常簡單但是功能很強大的想法 在表單欄位中定義一個新類型 <INPUT TYPE= FILE >
並且在表單本身加入了不同的編碼方案 不再使用典型的 <FORM ACTION= formproc asp METHOD= POST > 而是使用 <FORM ACTION= formproc asp METHOD= POST ENCTYPE= multipart/form data >這種編碼方案在傳送大量數據的時候 比起預設的 application/x url encoded 表單編碼方案 顯得效率要高得多 URL編碼只有很有限的字元集 使用任何超出字檔消符集的字元 必須用 %nn 代替 這里的nn表示相應的 個十六進制數字 例如 即使是普通的空格字元也要用 % 代替 而RFC 使用多部分MIME編碼 就象通常在e mail消息中看到的那樣 不編碼來傳送大量數據 而只是在數據周圍加上很少的簡單但實用的頭部 主要的廠商都採用了建議的 瀏覽…… 按鈕 用戶能很容易的使用本地 打開文件…… 對話框選擇要上傳的文件
RFC 仍然將大多數文件上傳的靈活方法留給了你的web應用程序 PUT用得很有限 WebDAV對內容的作者很有用 比如FrontPage用戶 但是對想在web應用程序中加入文件上傳的web開發者來說很少用到 因此 RFC 是在web應用程序中加入文件上傳的最好的辦法
在實際應用中 免費提供了Posting Acceptor ASP不懂 multipart/form data 編碼方案 取而代之 提供了Posting Acceptor Posting Acceptor是一種在上傳完成後 接受REPOST到一個ASP頁的ISAPI應用程序
Sofare Artisans的SA FileUp是最早的商業Active Server之一 幾經改進 現在作為一個純粹的ASP存在
二 基於ASP的文件上傳實現原理分析
基本原理是 採用ADO Stream對象的BinaryRead方法將FORM中的所有數據讀出 從中截取出所需的文件數據 以二進制文件方式存檔
下面是上傳文件頁面的一個例子() <><body><form name= Upload Method= Post Enctype= multipart/form data Action= Upload asp ><input type= file name= FileName ><INPUT TYPE= Submit VALUE= Upload ></TD></form></body></>
程序中使用了文件對象 這樣在Upload asp中採用BinaryRead方法讀來的原始數據就不僅僅是選擇的文件本身的數據 還包含該文件在用戶硬碟上的路徑 類型 提交頁面的表單等相關信息的描述 這樣我們就需從中提取出文件的具體內容 根據分析 數據的頭部信息與數據的分界線是兩對回車換行符 尾部也有分隔信息 我們可以採用類似以下的方法獲取文件數據 Dim FormData FormSize DataStart CLStr DivStrFormSize=Request TotalBytesFormData=Request BinaryRead(FormSize)CLStr=ChrB( )&ChrB( )DataStart=InStrB(FormData CLStr&CLStr)+ 是兩對回車換行符的長度DivStr=LeftB(FormData InStrB(FormData CLStr) )DataSize=InStrB(DataStart+ FormData DivStr) DataStart FormData=MidB(FormData DataStart DataSize) FormData就是文件的內容了 中間根據需要 可進行相應的處理 最後的工作就是將文件保存了 保存的方法可以有兩種 一種是利用VB或VC之類程序中的二進制文件操作方法 在工程中加入適當的類型庫 最終編譯成DLL文件 使用時再將該DLL文件注冊就可以了 文件存貯程序如下 Public Function SaveFile(Pathname As String) As String Dim objContext As ObjectContext Dim objRequest As Request Set objContext=GetObjectContext() Set objRequest=objContext( Request ) 以下的一段代碼是進行文件存貯的有關操作Dim FormData() As Byte CLStr DivStr Dim DataStart As Long DataSize As Long DataSize=objRequest TotalBytes Redim FormData(DataSize ) FormData=objRequest BinaryRead(DataSize) CLStr=ChrB( ) & ChrB( ) DataStart=InStrB(FormData CLStr & CLStr)+ DivStr=LeftB(FormData InStrB(FormData CLStr) ) DataSize=InStrB(DataStart+ FormData DivStr) DataStart FormData=MidB(FormData DataStart DataSize) 創建一個二進制文件並將FormData寫入其中 Open Pathname For Binary As Put # FormData Close # SaveFile= OK! End Function 第二種方法是利用ADO STREAM中提供的二進制文件操作方法來完成 保存文件的語句是 StreamOBJ SaveToFile (fileName ) 在 這種操作中 我們可以將有關的操作存放在一個類文件中 在應用時 直接將該類文件包含在ASP程序中就可以了 具體處理方法 請參閱有關介紹 三.文件上傳實現方法實例 實現文件上傳可使用或無方式 對於類 比如說microsoft posting acceptor(簡稱mpa) 就是公司發布的一個免費 這類的安裝也比較方便 對於的mpa 運行它的安裝文件就可以了 而一般的dll形式的 我們則需要進行注冊 例如 要使用aspcnUP dll 只要在Window 上執行regsvr [path]aspcnUP dll 系統出現注冊成功的信息提示就可以使用該了 對於無類 如的無上傳類 upload_ xsoft 在使用時 只要在處理程序中包含以下的語句就可以了 <! #include FILE= upload inc >set upload=new upload_ xSoft 建立上傳對象 有關的屬性與操作方法 請參閱該的使用手冊 下面是詀spcnUP dll為例 上傳部分類型文件的源代碼(upload asp) <% @ language= vbscript Set fileUP=Server CreateObject( aspcn Upload )fileUP Maxsize= fileUP Path= d:upfile fileUP UploadFor i= to fileUP Countfieldname=fileUP FieldName(i)If fileUP FileType(fieldname)= zip Or ileUP FileType(fieldname)= rar ThenfileUP Save fieldnameEnd If NextSet fileUP=Nothing%> 四.結束語 應用模式還在快速地發展著 在ASP.NET中 已經內置了文件上傳的功能 使用非常簡單方便 作為一種全新的技術 ASP.NET並不只是ASP的簡單升級 它是一個用於Web開發的全新框架 其中包含了許多新的特性 ASP.NET提供了更易於編寫 結構更清晰的代碼 利用這些代碼我們將會更容易地進行再利用和共享 從而開發出更多更實用的程序來 lishixin/Article/program/net/201311/13562
⑹ asp上傳源碼如何指定要保存的文件夾
objStream.SaveToFile Server.MapPath(filename),2
objStream.SaveToFile = Server.MapPath("filename")
這里,改頌世那個變數filename,改成"/橋譽test/"敏櫻段&filename試試。
⑺ 求ASP圖片上傳源碼,具體要求如下
<%@ language="javascript"%>
<%
var self = Request.serverVariables("SCRIPT_NAME");
if (Request.serverVariables("REQUEST_METHOD")=="POST")
{
var oo = new uploadFile();
oo.path = "../../images/swf/"; //存放路徑,為空表示當前路徑,默認為uploadFile
oo.named = "date"; //命名方式,date表示用日期來命名,file表示用文件名本身,默認為file
oo.ext = "all"; //允許上傳的擴展名,all表示都允許,默認為態臘all
oo.over = true; //當存在相同文件名時是否覆蓋,默認為false
oo.size = 1*1024*1024; //最大位元組數限制,默認為1G
oo.upload();
Response.write('<script type="text/javascript">location.replace("'+self+'")<空櫻/script>');
}
//ASP無組件上傳類
function uploadFile()
{
var bLen = Request.totalBytes;
var bText = Request.binaryRead(bLen);
var oo = Server.createObject("ADODB.Stream");
oo.mode = 3;
this.path = "uploadFile";
this.named = "file";
this.ext = "all";
this.over = false;
this.size = 1*1024*1024*1024; //1GB
//文件上傳
this.upload = function ()
{
var o = this.getInfo();
if (o.size>this.size)
{
alert("文件過大,不能上傳!");
return;
}
var f = this.getFileName();
var ext = f.replace(/^.+\./,"");
if (this.ext!="all"&&!new RegExp(this.ext.replace(/,/g,"|"),"ig").test(ext))
{
alert("目前暫不支持擴展名為 "+ext+" 的文件上傳!");
return;
}
if (this.named=="date")
{
var f = new Date().toLocaleString().replace(/\D/g,"") + "." + ext;
}
oo.open();
oo.type = 1;
oo.write(o.bin);
this.path = this.path.replace(/[^\帆虧滑/\\]$/,"$&/");
var fso = Server.createObject("Scripting.FileSystemObject");
if(this.path!=""&&!fso.folderExists(Server.mapPath(this.path)))
{
fso.createFolder(Server.mapPath(this.path));
}
try
{
oo.saveToFile(Server.mapPath(this.path+f),this.over?2:1);
Response.write('<script type="text/javascript">parent.form.swf_Pic.value=("images/swf/'+f+'")</script>');
alert(f);
}
catch(e)
{
alert("對不起,此文件已存在!");
}
oo.close();
delete(oo);
}
//獲取二進制和文件位元組數
this.getInfo = function ()
{
oo.open();
oo.type=1;
oo.write(bText);
oo.position = 0;
oo.type=2;
oo.charset="unicode";
var gbCode=escape(oo.readText()).replace(/%u(..)(..)/g,"%$2%$1");
var sPos=gbCode.indexOf("%0D%0A%0D%0A")+12;
var sLength=bLen-(gbCode.substring(0,gbCode.indexOf("%0D%0A")).length/3)-sPos/3-6;
oo.close();
oo.open();
oo.type = 1;
oo.write(bText);
oo.position=sPos/3;
var bFile=oo.read(sLength);
oo.close();
return { bin:bFile, size:sLength };
}
//獲取文件名
this.getFileName = function ()
{
oo.open();
oo.type = 2;
oo.writeText(bText);
oo.position = 0;
oo.charset = "gb2312";
var fileName = oo.readText().match(/filename=\"(.+?)\"/i)[1].split("\\").slice(-1)[0];
oo.close();
return fileName;
}
function alert(msg)
{
Response.write('<script type="text/javascript">alert("'+msg+'");</script>');
}
}
%>
<body topmargin="0" marginwidth="0">
<form action="<%=self%>" method="POST" enctype="multipart/form-data" onSubmit="return (this.upFile.value!='');" name="myform" style="border: 1px solid #C0C0C0">
<input type="file" name="upFile" size="21"/>
<input type=submit name=submit value=上傳 class="tx1">
</form>
⑻ ASP上傳圖片並保存到access資料庫某個表中的源碼,能詳細解釋一下源碼的意思
給你個例子:
1、access表有以下幾個欄位:
id 自動編號,
filename 文本,
type 文本,
what OLE對象,
size 數字
2、上傳頁面(upfile.htm):
文件上傳<br />
<form action="upload.asp" method="post" enctype="multipart/form-data">
文件 <input type="file" name="file1" /> <input type="submit" value="上傳" />
</form>
3、提交頁面(upload.asp):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--#include file="UpLoad_Class.asp"-->
<%
dim upload
set upload = new AnUpLoad
upload.Exe = "*"
upload.MaxSize = 2 * 1024 * 1024 '2M
upload.charset = "utf-8"
upload.GetData()
if upload.ErrorID>0 then
response.Write upload.Description
else
dim file
for each frm in upload.forms("-1")
response.Write frm & "=" & upload.forms(frm) & "<br />"
next
set file = upload.files("file1")
if not(file is nothing) then
set conn = server.CreateObject("ADODB.connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&server.mappath("./")&"\db.mdb"
set rs = server.createobject("adodb.recordset")
rs.Open "pic", conn, 1, 3, 2
rs.addnew
rs.fields("filename") = file.LocalName
rs.fields("type") = file.ContentType
rs.fields("what") = file.GetBytes()
rs.fields("size") = file.Size
rs.update
Response.Redirect "listpic.asp"
end if
end if
set upload = nothing
%>
4、其中引用了UpLoad_Class.asp文件,是艾恩無組件上傳類,網上搜一下就能找到。
⑼ asp如何實現文件上傳功能
基本原理是:採用ADO Stream對象的BinaryRead方法將FORM中的所有數據讀出,從中截取出所需的文件數據,以二進制文件方式存檔。
下面是上傳文件頁面的一個例子:
<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>
(9)asp文件上傳源碼擴展閱讀
幾種文件上傳技術的比較
1、基於HTTP協議
該方法需要編程者利用第三方軟體,如DELPHI、VB等,在應用程序中先進行HTTP協議編程,然後將待上傳文件內容按HTTP協議的格式打包,最後向WEB伺服器發送上傳的請求報文,從而實現文件的上傳。
因為DELPHI和VB不能編寫完整的WEB網路程序,只能編寫WEB小應用程序,因此,該方法只用於功能受限的網路應用。
2、基於VB(或DELPHI等)開發的文件上傳組件
該方法利用VB(或DELPHI等編程語言)開發ASP伺服器組件,實現特定的文件上傳服務。它首先利用ASP表單功能將文件(二進制格式)從用戶端上傳到伺服器端,然後使用VB開發的組件,對二進制文件進行處理,成為可以正常讀寫的文件。
該方法要求編程者不僅掌握ASP語言,而且還能利用VB等第三方語言進行組件編程,增加了開發的難度。
3、基於資料庫技術
該方法和上個方法有類似之處。不同的地方在於對上傳的二進制文件的處理上。它使用資料庫來保存二進制文件。無論是小型資料庫還是大型資料庫都提供了存儲二進制數據的數據類型,只要以Append Chunk方式將數據存入相應的欄位就可以了。
該方法雖然簡單可行,但是因為每次上傳的文件大小都是不一樣的,因此,會對資料庫的空間造成很大的浪費,降低了數據的訪問速度;並且使得文件只能在資料庫環境下進行訪問,造成了很大的不便。
⑽ 急求ASP源碼:上傳文件大小限定,圖片尺寸自動調整
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
網上搜的多而且雜,越看越迷糊..........
最好把每頁的代碼都寫一下,大致兩三個頁就可以解決了,謝謝達人幫助!!!!!!
解析:
三個頁:選擇頁,上傳頁sub,調用的代碼頁upload.inc,
我自己就在用這個,LZ給分吧
1瀏覽上傳:
<form action="sub" method="post" enctype="multipart/form-data" target="_self">
<input type=file name=src size="20" value="瀏覽">
<input type=submit value="上傳" name=B1 IsShowProcessBar="True">
</form>
sub 執行上傳並返回地址,同時保存文件名在session(ccc)中
<!--#include FILE="upload.inc"-->
<%
dim upload,file,formName,formPath,iCount,fileformat
set upload=new upload_F
function MakedownName()
dim fname
fname = now()
fname = replace(fname,"-","")
fname = replace(fname," ","")
fname = replace(fname,":","")
fname = replace(fname,"PM","")
fname = replace(fname,"AM","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
fname = int(fname) + int((10-1+1)*Rnd + 1)
MakedownName=fname
end function
formPath="upload/"
iCount=0
for each formName in upload.file ''列出所有上傳了的文件
set file=upload.file(formName) ''生成一個文件對象
fileformat=lcase(right(file.filename,4))
if fileformat="" or fileformat="" then
response.write"<script>alert('文件格式不對,請重新上傳!');location='"&request.ServerVariables("HTTP_REFERER")&"'</script>"
response.end
end if
if file.FileSize>0 then ''如果 FileSize > 0 說明有文件數據
newname=MakedownName()&"."&mid(file.FileName,InStrRev(file.FileName, ".")+1)
session("ccc")=newname
file.SaveAs Server.mappath(formPath&newname) ''保存文件
iCount=iCount+1
else
response.write "<font style=FONT-SIZE:9pt>未找到文件 <A HREF=javascript:history.back(1)>重新上傳</A><font style=FONT-SIZE:9pt>"
response.end
end if
next
%>
<%
response.write "<a href='upload/"&newname&"' target=_blank>upload/"&newname&" </a>("&cint(file.FileSize/1024)&"K) 上傳成功!"
%>
<%
set file=nothing
set upload=nothing ''刪除此對象
%>
upload.inc 頁的代碼如下:
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
dim upfile_Stream
Class upload_F
dim Form,File,Version
Private Sub Class_Initialize
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version="upload Version 1.0"
if Request.TotalBytes<1 then Exit Sub
set Form=CreateObject("Scripting.Dictionary")
set File=CreateObject("Scripting.Dictionary")
set upfile_Stream=CreateObject("Adodb.Stream")
upfile_Stream.mode=3
upfile_Stream.type=1
upfile_Stream.open
upfile_Stream.write Request.BinaryRead(Request.TotalBytes)
vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
while iFormStart < iFormEnd
iStart=inString(iFormStart,"name=""")
iEnd=inString(iStart+6,"""")
mFormName=subString(iStart+6,iEnd-iStart-6)
iFileNameStart=inString(iEnd+1,"filename=""")
if iFileNameStart>0 and iFileNameStart<iFormEnd then
iFileNameEnd=inString(iFileNameStart+10,"""")
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
if iEnd>iStart then
mFileSize=iEnd-iStart-4
else
mFileSize=0
end if
set theFile=new FileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.add mFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
if iEnd>iStart then
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue=""
end if
form.Add mFormName,mFormValue
end if
iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
End Sub
Private Function subString(theStart,theLen)
dim i,c,stemp
upfile_Stream.Position=theStart-1
stemp=""
for i=1 to theLen
if upfile_Stream.EOS then Exit for
c=ascB(upfile_Stream.Read(1))
If c > 127 Then
if upfile_Stream.EOS then Exit for
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
End If
Next
subString=stemp
End function
Private Function inString(theStart,varStr)
dim i,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
for i=theStart to upfile_Stream.Size-theLen
if i>upfile_Stream.size then exit Function
upfile_Stream.Position=i-1
if AscB(upfile_Stream.Read(1))=AscB(midB(Str,1)) then
InString=i
for j=2 to theLen
if upfile_Stream.EOS then
inString=0
Exit for
end if
if AscB(upfile_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
InString=0
Exit For
end if
next
if InString<>0 then Exit Function
end if
next
End Function
Private Sub Class_Terminate
form.RemoveAll
file.RemoveAll
set form=nothing
set file=nothing
upfile_Stream.close
set upfile_Stream=nothing
End Sub
Private function GetFilePath(FullPath)
If FullPath <> "" Then
GetFilePath = left(FullPath,InStrRev(FullPath, "\"))
Else
GetFilePath = ""
End If
End function
Private function GetFileName(FullPath)
If FullPath <> "" Then
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
Else
GetFileName = ""
End If
End function
Private function toByte(Str)
dim i,iCode,c,iLow,iHigh
toByte=""
For i=1 To Len(Str)
c=mid(Str,i,1)
iCode =Asc(c)
If iCode<0 Then iCode = iCode + 65535
If iCode>255 Then
iLow = Left(Hex(Asc(c)),2)
iHigh =Right(Hex(Asc(c)),2)
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function
End Class
Class FileInfo
dim FormName,FileName,FilePath,FileSize,FileStart
Private Sub Class_Initialize
FileName = ""
FilePath = ""
FileSize = 0
FileStart= 0
FormName = ""
End Sub
Public function SaveAs(FullPath)
dim dr,ErrorChar,i
SaveAs=1
if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
if FileStart=0 or right(fullpath,1)="/" then exit function
set dr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
upfile_Stream.position=FileStart-1
upfile_Stream.to dr,FileSize
dr.SaveToFile FullPath,2
dr.Close
set dr=nothing
SaveAs=0
end function
End Class
</SCRIPT>