マシンの写真やファイルをサーバーに置きたい場合はどうすればよいですか? 3 つのオプションがあります: 1. FTP アップロード、2. USB フラッシュ ドライブを使用してサーバーにコピー、3. サーバーがASPアップロード機能、Webページを利用 ブラウザからサーバーにファイルをアップロードします。
今回はaspのアップロード機能を使ってローカルファイルをサーバーにアップロードする方法を説明します。
最も単純なシステムには、次の 3 つのファイルが含まれています。
Upload.htm --ポート ファイルをアップロードし、ローカル ファイルを選択します。 Uploadimg.asp --プログラム制御ファイルをアップロードします。
Upload.htm コンテンツ -- ポート ファイルをアップロードし、ローカル ファイルを選択します
- <html>
- <頭>
- </head>
- <本文>
- <tablewidth=80%border=0align=center>
- <formname=form1method=postaction=uploadimg.aspenctype=multipart/form-data>
- <tr>
- <tdalign=center><inputname=upfiletype=fileid=upfile></td>
- </tr>
- <tr>
- <tdalign=center><inputtype=submitname=Submitvalue=写真をアップロード></td>
- </tr>
- </form>
- </テーブル>
- </body>
- </html>
Uploadimg.asp content -- プログラム制御ファイルのアップロード
- <!--#includeFILE=upload_5xsoft.inc-->
- <%
- dimupload、ファイル、ファイルパス
- ファイルパス=アップロード/
- setupload=newupload_5xSoft''アップロード オブジェクトの作成
- foreachformNameinupload.file'' はアップロードされたすべてのファイルをリストします
- setfile=upload.file(formName)'' はファイル オブジェクトを生成します
- iffile.FileSize>0then''FileSize>0 の場合、ファイル データがあることを意味します
- fname=ファイル.ファイル名
- file.SaveAsServer.mappath(filepath&fname)''ファイルを保存します
- エンドイフ
- setfile=何もない
- 次
- setupload=nothing''このオブジェクトを削除します
Upload_5xsoft.inc コンテンツ
--このファイルの内容は、このドリルの内容ではありません。
- <SCRIPTRUNAT=サーバー言語=VBSCRIPT>
- dimoUpFileStream
- クラスアップロード_5xSoft
- dimフォーム、ファイル、バージョン
- PrivateSubClass_Initialize
- dimRequestBinDate、sStart、bCrLf、sInfo、iInfoStart、iInfoEnd、tStream、iStart、oFileInfo
- dimiFileSize、sFilePath、sFileType、sFormvalue、sFileName
- dimiFindStart、iFindEnd
- dimiFormStart、iFormEnd、sFormName
- Version=コンポーネントアップロードクラスなし Version0.93
- setForm=Server.CreateObject(Scripting.Dictionary)
- setFile=Server.CreateObject(Scripting.Dictionary)
- ifRequest.TotalBytes<1thenExitSub
- settStream=Server.CreateObject(adodb.stream)
- setoUpFileStream=Server.CreateObject(adodb.stream)
- oUpFileStream.Type=1
- oUpFileStream.Mode=3
- oUpFileStream.Open
- oUpFileStream.WriteRequest.BinaryRead(Request.TotalBytes)
- Response.Write<fontsize=2>ページの実行時間: &FormatNumber((Timer()-time1)*1000,3)&ミリ秒</font><br>
- oUpFileStream.Position=0
- RequestBinDate=oUpFileStream.Read
- iFormStart=1
- iFormEnd=LenB(RequestBinDate)
- bCrLf=chrB(13)&chrB(10)
- sStart=MidB(RequestBinDate,1,InStrB(iFormStart,RequestBinDate,bCrLf)-1)
- iStart=LenB(sStart)
- iFormStart=iFormStart+iStart+1
- while(iFormStart+10)<iFormEnd
- iInfoEnd=InStrB(iFormStart,RequestBinDate,bCrLf&bCrLf)+3
- tStream.Type=1
- tStream.Mode=3
- tStream.Open
- oUpFileStream.Position=iFormStart
- oUpFileStream.CopyTotStream、iInfoEnd-iFormStart
- tStream.Position=0
- tStream.Type=2
- tStream.Charset=gb2312
- sInfo=tStream.ReadText
- 'フォーム項目名を取得
- iFormStart=InStrB(iInfoEnd,RequestBinDate,sStart)
- iFindStart=InStr(22,sInfo,name=,1)+6
- iFindEnd=InStr(iFindStart,sInfo,,1)
- sFormName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
- 'ファイルの場合
- ifInStr(45,sInfo,filename=,1)>0then
- setoFileInfo=newFileInfo
- 'ファイル名を取得する
- iFindStart=InStr(iFindEnd,sInfo,ファイル名=,1)+10
- iFindEnd=InStr(iFindStart,sInfo,,1)
- sFileName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
- oFileInfo.FileName=getFileName(sFileName)
- oFileInfo.FilePath=getFilePath(sFileName)
- 'ファイルタイプを取得
- iFindStart=InStr(iFindEnd,sInfo,Content-Type:,1)+14
- iFindEnd=InStr(iFindStart,sInfo,vbCr)
- oFileInfo.FileType=Mid(sinfo,iFindStart,iFindEnd-iFindStart)
- oFileInfo.FileStart=iInfoEnd
- oFileInfo.FileSize=iFormStart-iInfoEnd-3
- oFileInfo.FormName=sFormName
- file.addsFormName,oFileInfo
- それ以外
- 'フォーム項目の場合
- tStream.Close
- tStream.Type=1
- tStream.Mode=3
- tStream.Open
- oUpFileStream.Position=iInfoEnd
- oUpFileStream.CopyTotStream、iFormStart-iInfoEnd-3
- tStream.Position=0
- tStream.Type=2
- tStream.Charset=gb2312
- sFormvalue=tStream.ReadText
- form.AddsFormName,sFormvalue
- エンドイフ
- tStream.Close
- iFormStart=iFormStart+iStart+1
- 曲がります
- RequestBinDate=
- setStream=なし
- EndSub
- PrivateSubClass_Terminate
- ifnotRequest.TotalBytes<1then
- form.RemoveAll
- file.RemoveAll
- setform=何もしない
- setfile=何もない
- oUpFileStream.Close
- setoUpFileStream=なし
- エンドイフ
- EndSub
- プライベート関数GetFilePath(フルパス)
- IfFullPath<>Then
- GetFilePath=left(FullPath,InStrRev(FullPath,))
- それ以外
- GetFilePath=
- EndIf
- 終了機能
- プライベート関数GetFileName(フルパス)
- IfFullPath<>Then
- GetFileName=mid(フルパス,InStrRev(フルパス,)+1)
- それ以外
- Getファイル名=
- EndIf
- 終了機能
- エンドクラス
- クラスファイル情報
- dimFormName、ファイル名、ファイルパス、ファイルサイズ、ファイルタイプ、ファイル開始
- PrivateSubClass_Initialize
- ファイル名=
- ファイルパス=
- ファイルサイズ=0
- ファイル開始=0
- フォーム名=
- ファイルタイプ=
- EndSub
- パブリック関数名前を付けて保存(フルパス)
- dimoFileStream、ErrorChar、i
- 名前を付けて保存=1
- iftrim(フルパス)=orright(フルパス,1)=/thenexitfunction
- setoFileStream=CreateObject(Adodb.Stream)
- oFileStream.Type=1
- oFileStream.Mode=3
- oFileStream.Open
- oUpFileStream.position=ファイル開始
- oUpFileStream.copytooFileStream,FileSize
- oFileStream.SaveToFileFullPath,2
- oFileStream.Close
- setoFileStream=なし
- 名前を付けて保存=0
- エンドファンクション
- エンドクラス
- </スクリプト>
この記事で説明するのは、ファイルをアップロードするための最も単純なプログラムです。このドリルを学習した後は、基本的に ASP の一般的なアップロード機能をマスターしてください。