濮阳杆衣贸易有限公司

主頁 > 知識庫 > 利用SA FileUp組件進行多文件上傳

利用SA FileUp組件進行多文件上傳

熱門標簽:成都ai外呼系統(tǒng)線路 長春公司外呼系統(tǒng)中心 沈陽三五防封電銷卡 云南便宜外呼系統(tǒng)平臺 沈陽電話機器人公司 鄢陵學校如何做地圖標注 鄭州智能外呼電銷機器人廠家 虛擬電話外呼系統(tǒng) 廣東語音外呼系統(tǒng)公司
大家可以根據(jù)自己的實際情況進行修改,特別是數(shù)據(jù)庫操作部分。
============================================
利用稻香老農(nóng)的無組件進行多文件上傳
請見:
http://bbs.blueidea.com/viewthread.php?tid=1249535
==================================================
本例屬于文件和表單項的混合提交。

簡單說明:
雖然重點在處理頁上,但我覺得有必要介紹一下表單的項目。
本例是相冊里像片的上傳。
其中的groupID是隱藏域傳遞的大類的ID
其中的albumID是隱藏域傳遞的小類的ID
file1-->>file5是文件
photoTitle1-->>photoTitle5 是像片的標題
photoIntro1-->>photoIntro5 是像片的簡介
photoWidth1-->>photoWidth5 是像片的寬度
photoHeight1-->>photoHeigth5 是像片的高度
photoSize1-->>photoSize5 是像片的大小。

注意:因本人沒有聲明變量的習慣,所以大家要是強制聲明變量的話,就得自己加了。
===========================================

提交頁:主要代碼如下
form name="fileForm" method="post" action="photo_savephoto.asp" enctype="multipart/form-data" onSubmit="return checkForm();">

INPUT name="groupID" type="hidden" id="groupID" value="%=groupID%>" size="10">
INPUT name="albumID" type="hidden" id="albumID" value="%=albumID%>" size="10">

nbsp;nbsp;上傳說明:最多可以同時上傳五個文件,其中標題最多30字,簡介200字。

table width="96%" align="center" cellpadding="4" cellspacing="2">
    tr align="center" valign="middle">
      td align="left" bgcolor="#F4CECE" id="upid">文件1/td>
      td height="29" align="left" bgcolor="#F4CECE" id="upid">            INPUT name="file1" type="file" class="myInput" size="20">
        寬: INPUT name="photoWidth1" type="text" class="input-disabled" id="photoWidth1" size="5" readonly="">
          高: INPUT name="photoHeight1" type="text" class="input-disabled" id="photoHeight1" size="5" readonly="">
          大?。篒NPUT name="fileSize1" type="text" class="input-disabled" id="fileSize1" size="5" readonly="">         
      /td>
    /tr>
    tr align="center" valign="middle">
      td colspan="2" align="left" bgcolor="#FDF2F2" id="upid">
        標題: INPUT name="photoTitle1" type="text" class="myInput" id="photoTitle1" size="40">
          BR>        
        簡介:TEXTAREA name="photoIntro1" cols="60" rows="5" class="myInput" id="photoIntro1">/TEXTAREA>
      /td>
      /tr>

。。。。。。。

    tr align="center" valign="middle" bgcolor="#F4CECE">
      td height="24" colspan="2">
        input name="Submit" type="submit" class="myButton" value="開始上傳">
        input name="Submit2" type="reset" class="myButton" value="重新填寫">
      /td>
      /tr>
  /table>
/form>
下面的script是我用來檢查圖片屬性的。其中檢查了圖片的寬度,高度,大小,是否是圖片。

SCRIPT language="JavaScript">
!--
       var upFileSize=%=upFileSize%>;
//-->
/SCRIPT>

SCRIPT language="JavaScript" src="photo_addphoto.js">/SCRIPT>


TABLE width="98%"  border="0" cellpadding="0" cellspacing="0" style="table-layout:fixed;">
  TR>
    TD height="1">img src="images/add.gif" id="loadPhoto" onload="if(!firstLoad)showInfo();">/TD>
  /TR>
/TABLE>


photo_addphoto.js

 提示:您可以先修改部分代碼再運行
===============
這里只寫出了一個文件的相關輸入框,其他四個類似。
說明一點,并不是有5 個的限制,只是我這里只寫了5個。
其中的photo_addphoto.js在客戶端對圖片進行一遍檢查,不是圖片的會提示,大小超過限制的也會提示。
這樣就避免了用戶經(jīng)過耐心的等待后才被告訴不合標準的煩惱。
=================================================
處理頁代碼:

%@ CODEPAGE="936"%>
%
Server.ScriptTimeOut=5000 '--腳本超時設置為5000
%>
!--#include file="conn.asp" -->
%
Set oFileUp = Server.CreateObject("SoftArtisans.FileUp") '--建立SA FileUp Object

'oFileUp.Path = Server.MapPath("/upfile/") '--我這里要自己定義文件名,所以沒有使用Path屬性,注意這句被注釋掉了。


strRestrictBy = ""  '--文件驗證方式,分為extension和ContentType

iCount=0  '--文件上傳數(shù)的計數(shù)變量

formPath="upfile/"    '文件保存位置

'-----------檢查是否有在此位置上傳的權限-----------這里省略了。
groupID=trim(oFileUp.form("groupID"))
albumID=trim(oFileUp.form("albumID"))
'-----------檢查權限完成------

if errMsg="" then   '----如果到此還沒有錯誤
For Each strFormElement In oFileUp.Form
       If IsObject(oFileUp.Form(strFormElement)) Then  '如果是文件
              If Not oFileUp.Form(strFormElement).IsEmpty Then  '--文件不為空
                     flagOK=1
                     '--不是文件或文件大于限制,設置錯誤信息
                     If oFileUp.Form(strFormElement).TotalBytes100  Then
                            flagOK=0
                     ElseIf oFileUp.Form(strFormElement).TotalBytes> upFileSize Then
                            flagOK=0
                            errMsg=errMsg+"文件:"oFileUp.Form(strFormElement).UserFileName" 大于"upFileSize\1024"KB!br>"
                     Else
                            strShortFileName = mid(oFileUp.Form(strFormElement).UserFileName,InStrRev(oFileUp.Form(strFormElement).UserFileName, "\")+1)  '取得文件名
                            strExtension = Mid(strShortFileName, InStrRev(strShortFileName, "."))  '取得擴展名
                            If strRestrictBy = "extension" Then  '--驗證方式為擴展名
                                   'strShortFileName = oFileUp.Form(strFormElement).ShortFileName
                                   '======檢查后綴名====
                                   Select Case LCase(strExtension)
                                          Case ".jpg", ".gif", ".bmp",".png"

                                          Case Else
                                                 flagOK=0
                                                 oFileUp.Form(strFormElement).Delete
                                                 Response.Write("B>錯誤:/B> 擴展名為 I>" strExtension "/I> 的文件不能被上傳。BR>")
                                   End Select
                            Else '--驗證方式為MIME類型
                                   strContentType = oFileUp.Form(strFormElement).ContentType
                                   Select Case LCase(strContentType)
                                          Case "image/gif", "image/jpeg", "image/pjpeg"
                                          Case Else
                                                 flagOK=0
                                                 oFileUp.Form(strFormElement).Delete
                                                 Response.Write("B>錯誤:/B> MIME類型為 I>" strContentType "/I> 的文件不能被上傳。BR>")
                                   End Select
                            End If '--end if 驗證方式
                     End If 'end if 文件大小判斷

                     If flagOK=1 Then  '如果文件通過檢查,保存文件,并插入數(shù)據(jù)庫紀錄
                                          randomize
                                          ranNum=int(900*rnd)+100
                                          filename=year(now())month(now())day(now())hour(now())minute(now())second(now())ranNumLCase(strExtension)
                                          oFileUp.Form(strFormElement).SaveInVirtual formPathfilename  '讓文件名不重復,保存文件,這里用的是SaveInVirtual方法

                            
                                          '--輸出服務器上的文件路徑
                                          Response.Write oFileUp.Form(strFormElement).ServerName ":ServerNameBR>"

                                          '--輸出客戶端的文件路徑
                                          Response.Write "BR>B>文件:/B>"oFileUp.Form(strFormElement).UserFileName "BR>"

                                          '--輸出該文件的大小
                                          Response.Write "B>大?。?B>"oFileUp.Form(strFormElement).TotalBytes "BR>"
                                          '===添加文件的信息到數(shù)據(jù)庫里===
                                          myIndex=right(strFormElement,1) '--取得文件的序號,如file1則取得為1,file2取得為2
                                          temp_photoTitle=oFileUp.form("photoTitle"+myIndex) '--這四行取得對應的標題,簡介,寬度,高度
                                          temp_photoIntro=oFileUp.form("photoIntro"+myIndex)
                                          temp_photoWidth=oFileUp.form("photoWidth"+myIndex)
                                          temp_photoHeight=oFileUp.form("photoHeight"+myIndex)
                                          '====檢查輸入,為空則給初值==
                                          temp_photoTitle=replace(trim(temp_photoTitle),"'","''")
                                          if temp_photoTitle="" then
                                                 temp_photoTitle="沒有填寫"
                                          end if
                                          temp_photoIntro=replace(trim(temp_photoIntro),"'","''")
                                          if temp_photoIntro="" then
                                                 temp_photoIntro="沒有填寫"
                                          end if
                                          if temp_photoWidth="" or not IsNumeric(temp_photoWidth) then
                                                 temp_photoWidth=160
                                          end if
                                          if temp_photoHeight="" or not IsNumeric(temp_photoHeight) then
                                                 temp_photoHeight=120
                                          end if
                                          '===插入數(shù)據(jù)庫===
                                          FileSize=oFileUp.Form(strFormElement).TotalBytes
                                          sql="insert into TBL_PHOTO(albumID,groupID,userName,addTime,photoFilename,photoTitle,photoIntro,photoClick,photoSize,photoWidth,photoHeight,locked,viewPassword) values("albumID","groupID",'"session("userName")"','"Now()"','"filename"','"temp_photoTitle"','"temp_photoIntro"',1,"FileSize","temp_photoWidth","temp_photoHeight",'no','')"
                                          conn.execute sql
                                          sql="update TBL_ALBUM set photoCount=photoCount+1 where albumID="albumID
                                          conn.execute sql
                                          sql="update TBL_GROUP set photoCount=photoCount+1 where groupID="groupID
                                          conn.execute sql              
                                          '===輸出上傳成功信息===
                                          iCount=iCount+1
                     End If

              Else
                     Response.Write strFormElement "對象為空!"
              End If '--end if 對象為空
       End If '--end if 是否是文件
Next
Set oFileUp = Nothing  '刪除此對象
end if '--end if 沒有錯誤信息

response.write "br>"iCount" 個文件上傳結束!"
response.write "br>a href='photo_listphoto.asp?albumID="albumID"'>B>返回相冊/B>/a>"
'=====如果有錯,輸出錯誤信息=====       
if errMsg>"" then
       response.write "br>"errMsg
       response.write "INPUT type='button' onClick='history.go(-1)' value='返回' class='myInput'>"
end if
conn.close
set conn=nothing
%>

===================================================
看完了實例,下面對SA FileUP的屬性和方法進行簡單的介紹,免得大家初次接觸感到發(fā)暈。
這些是我覺得比較常用的,例句和注釋都是按我的理解寫的。
如果大家在應用中發(fā)現(xiàn)有什么問題,請指出。謝謝。

建立SA FileUp 對象的方法:
Set oFileUp = Server.CreateObject("SoftArtisans.FileUp")

取出表單所有項的方法:
For Each strFormElement In oFileUp.Form
       用 oFileUp.Form(strFormElement)就可以引用每個對象,文件也是這樣
       注意:如果是多選下拉框,則用oFileUp.FormEx(strFormElement)
       可以這樣來遍歷它。
       For Each strSubItem In oFileUp.FormEx(strFormElement)
              Response.Write( strSubItem "BR>")
       Next
Next

ContentType屬性:
oFileUp.Form(strFormElement).ContentType
可以得到文件的MIME類型

IsEmpty屬性
oFileUp.Form(strFormElement).IsEmpty
可以知道用戶是不是指定了一個無效的文件

MaxBytes屬性
oFileUp.Form(strFormElement).MaxBytes=30000
指定文件的限制,單位為Byte,如果超過它,那么只存儲MaxBytes指定的大小。其余舍棄。

ServerName屬性
oFileUp.Form(strFormElement).ServerName
可以得到文件保存到服務器的完整路徑。

ShortFilename屬性
oFileUp.Form(strFormElement).ShortFilename
可以得到客戶端的文件名,注意只是文件名,我這里沒有用,因為報錯。呵呵。

UserFilename屬性
oFileUp.Form(strFormElement).UserFileName
可以得到客戶端文件的完整路徑。可以輸出一下給用戶看看。

TotalBytes屬性
oFileUp.Form(strFormElement).TotalBytes
可以得到文件的大小,單位為Byte

SaveInVirtual(路徑)方法
oFileUp.Form(strFormElement).SaveInVirtual "upfile/"
oFileUp.Form(strFormElement).SaveInVirtual "upfile/aa.abc"
如果只指定了路徑,則保留原文件名,否則按指定指定文件名保存
服務器管理員可以禁止掉其他所有方法,但這個一定會留的。

SaveAs (文件名)方法
oFileUp.Form(strFormElement).SaveAs "C:\aa\a.tmp"
如果沒有指定路徑,只是指定了文件名,那么將用Path屬性指定的路徑。
Path屬性一會介紹。

Save方法
oFileUp.Path="D:\wwwroot\abc\upfile\"
注意必須是真實路徑,可以用Server.MapPath來轉(zhuǎn)換虛擬路徑。
oFileUp.Form(strFormElement).Save
不能指定文件名嘍。

注意:Path屬性必須在提到任何表單項之前,建議放在
Set oFileUp = Server.CreateObject("SoftArtisans.FileUp")
的后面。前提是你用的話。

Delete (文件名,可選)
oFileUp.Form(strFormElement).Delete
從服務器上刪除文件,如果不指定文件名,則刪除當前的文件。
如果指定的話,必須是文件的完整路徑。

Flush方法
oFileUp.Flush
當你不想保存任何東西的時候,可以用它來放棄全部的輸入流。

標簽:四平 防城港 平頂山 朝陽 孝感 遼陽 馬鞍山 湖北

巨人網(wǎng)絡通訊聲明:本文標題《利用SA FileUp組件進行多文件上傳》,本文關鍵詞  利用,FileUp,組件,進行,多,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用SA FileUp組件進行多文件上傳》相關的同類信息!
  • 本頁收集關于利用SA FileUp組件進行多文件上傳的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    赤水市| 合水县| 浦北县| 洛浦县| 迁西县| 丹东市| 宿迁市| 洪洞县| 横山县| 高台县| 成武县| 青岛市| 沾益县| 定南县| 花莲县| 临颍县| 丹凤县| 东兰县| 德保县| 巴林右旗| 万州区| 盘山县| 崇仁县| 大渡口区| 九寨沟县| 呼伦贝尔市| 马鞍山市| 百色市| 惠东县| 琼结县| 宜黄县| 洪洞县| 彝良县| 梓潼县| 兴隆县| 延安市| 本溪市| 建始县| 廉江市| 花莲县| 黑龙江省|