トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

ASPでファイルのアップロード

このドキュメントは、ASPでのファイルアップロード方法と、
アップロードした情報をMS SQL Serverに格納、取得する方法を記します。

テスト環境

アップロードしたファイルをDB(MSSQL)に格納する

BASP21のサンプルソースには、アップロードしたファイルを所定のフォルダに保存するコードがあります。= これを参考に、アップロードしたファイルをデータベースに格納する情報を以下に記します。

アップロード用テーブル定義

  • 下記に記すテーブルをMSSQLに作成します。
CREATE TABLE IMG
(
ID INTEGER IDENTITY(1,1) NOT NULL PRIMARY KEY,
FILENAME TEXT,
DATA IMAGE
)
go

HTMLコード(upload.html)

 <HTML>
   <BODY>
     <FORM ACTION="upload.asp"  ENCTYPE="multipart/form-data" METHOD=POST>
       ファイル: <INPUT TYPE=file NAME="file"><BR>
       <INPUT TYPE=SUBMIT NAME=UPLOAD>
     </FORM>
   </BODY>
 </HTML>

ASPコード(upload.asp)

oCn.Open "DSN=db;UID=sa;PWD=admin" は環境により変更してください

<%@ LANGUAGE = VBSCRIPT %>
<%

Set oBASP = Server.CreateObject("basp21")
Set oCn   = Server.CreateObject("ADODB.Connection")
Set oRs   = CreateObject("ADODB.Recordset")

postData   = Request.BinaryRead(Request.TotalBytes)
nFileSize  = oBASP.FormFileSize(postData,"file")
szFileName = Mid(oBASP.FormFileName(postData,"file"), InstrRev(oBASP.FormFileName(postData,"file"),"\")+1)
fileData   = oBASP.FormBinary(postData, "file")

oCn.Open "DSN=db;UID=sa;PWD=admin"

oRs.Open "IMG", oCn, 1, 3	' adOpenKeyset = 1, adLockOptimistic = 4
oRs.AddNew
oRs.fields("filename") = szFileName
oRs.fields("data") = fileData
oRs.Update

oRs.Close
Set oRs = Nothing
oCn.Close
Set oCn = Nothing

%>
<HTML>
<BODY>
アップロード完了!<BR>
ファイル名: <%= szFileName %><BR>
</BODY>
</HTML>

以上のテーブル定義、HTML、ASPでファイルのアップロードが出来ます

アップロードしたファイルの取り出し(getdata.asp)

このドキュメントで定義したIMGテーブルには、プライマリキーとしてIDカラムが定義されています。
上記のプログラム(ASP)を実行すると、IDカラムに値が格納されます。(インクリメントされた値)

この値を元に<A HREF>..</A>によるダウンロードを可能にさせます。
すなわちHTMLなどに

<A HREF="getdata.asp?id=1">ID=1のデータをダウンロード</A>

という感じになります。

<%@ LANGUAGE = VBSCRIPT %>
<%
Set oCn  = Server.CreateObject("ADODB.Connection")
Set oCmd = Server.CreateObject("ADODB.Command")

id    = Request.QueryString("id")

szSQL = "SELECT * FROM img WHERE id = " + id
oCn.Open "DSN=db;UID=sa;PWD=admin"
oCmd.ActiveConnection  = oCn
oCmd.CommandText = szSQL
Set oRs = oCmd.Execute

Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename=""" + oRs.fields("filename") + """"
Response.BinaryWrite oRs.fields("data")

Response.End

Set oCmd = Nothing
oRs.Close
Set oRs = Nothing
oCn.Close
Set oCn = Nothing

%>

画像として表示した場合

上記ソースのgetdata.aspを以下のように修正(MIMEタイプがgifの場合)

Response.ContentType = "image/gif"
Response.AddHeader "content-disposition", "inline; filename=""" + oRs.fields("filename") + """"

HTML側は

 <IMG SRC="getdata.asp?id=1">

となります。



Last-modified: 2008-04-27 (日) 17:19:54 (860d)