コンポーネントなしでコンポーネントをアップロードすることに成功したので、全員と共有するコードを提供します。
/* addemployee.asp */
<html>
<頭>
<title>スタッフホーム</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="../css/site_css.css" type="text/css">
</head>
<script language="javascript">
<!--
// カテゴリを選択
//////////////////////////////////////////////// /// ///////////////////////
関数 selectsort(txtSubject){
var 戻り値
returnValue=window.showModalDialog("selMode.htm",null,"center:1;status:0;help:0;resize:0;dialogheight:300px;dialogwidth:206px");
if (returnValue!="" && returnValue!=null){
txtSubject.value=returnValue
}
}
//////////////////////////////////////////////// /// ///////////////////////
//合法性チェック
関数 isOK(thisForm){
var strTemp、strValue、strLen、strExName
if(thisForm.txtTitle.value==""){
alert("ヒント: タイトルを空にすることはできません。正しく入力してください。")
thisForm.txtTitle.focus()
falseを返す
}
if(thisForm.txtSort.value==""){
alert("ヒント: 正しいカテゴリを選択してください")
thisForm.txtSort.focus()
falseを返す
}
/*画像タイプをチェック*/
if(thisForm.file.value!=""){
strTemp=thisForm.file.value
strValue=strTemp.toLowerCase()
strLen=strTemp.length
strExName=strValue.substring(strLen-4,strLen)
if (strExName!=".jpg" && strExName!=".gif"){
alert("jpg または gif ファイルを選択してください!")
falseを返す
}
trueを返す
}
}
//-->
</script>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="1" topmargin="1">
<form name="form1" method="post" action="transact1.asp" enctype="multipart/form-data">
<table border="0" cellpacing="0" cellpadding="0">
<tr>
<tdcolspan="2" bgcolor="#006699" height="15"> </td>
</tr>
<tr>
<td class="textBlack">
<div align="right">タイトル:</div>
</td>
<td>
<input type="text" name="txtTitle" size="52" class="textarea">
</td>
</tr>
<tr>
<td class="textBlack">
<div align="right">カテゴリ:</div>
</td>
<td>
<input type="text" name="txtSort" size="35" class="textarea">
<input type="button" name="Submit2" class="buttonSkid" onclick="selectsort(txtSort);">
</td>
</tr>
<tr>
<td class="textBlack" valign="top">
<div align="right">テキスト:</div>
</td>
<td>
<textarea name="txtContent" rows="15"cols="50" class="textarea"></textarea>
</td>
</tr>
<tr>
<td height="14" class="textBlack" valign="top">
<div align="right">写真:</div>
</td>
<td height="14" class="textBlack">
<div align="left">
<input type="file" name="file" size="35" class="textarea">
</div>
</td>
</tr>
<tr>
<td height="42" class="textBlack" valign="top"> </td>
<td height="42" class="textBlack" valign="middle">
<p>1. アップロードする写真のサイズを <font color="#FF0000"><b>500K</b></font> 以内に制限してください。そうでない場合、アップロードは許可されません。<br>
2. アップロードする画像は<font color="#FF0000"><b>150*130 ピクセル</b></font><br> である必要があります。
3. アップロードした画像を JPG または GIF 形式でアップロードします</p>
</td>
</tr>
<tr>
<td height="39" class="textBlack"> </td>
<td height="39" valign="middle">
<div align="center"><img src="../images/save.gif" width="85" height="19" onClick="if(isOK(form1)){form1.submit()}" >
<img src="../images/close.gif" width="85" height="19" onClick="self.close();" ></div>
</td>
</tr>
</テーブル>
</form>
</body>
</html>
************************************************* * ***********************
/* transact1.asp*/
<!--#include file="../func/conn.inc"-->
<!--#include file="../func/fupload.inc"-->
<!--#include file="../func/myfunctions.inc"-->
<%
Request.ServerVariables("REQUEST_METHOD") = "POST" の場合
薄暗いフィールド
Dim strTitle、strSort、strContent
ディム rs,sSql
ディム iMaxid
ディム strMaxid
ディム・ストレン
フィールドを設定 = GetUpload()
strTitle=BinaryToString(Fields("txtTitle").value)
strSort=BinaryToString(Fields("txtSort").value)
strContent=BinaryToString(Fields("txtContent").value)
strSort=split(トリム(strSort),"-")
instr(1,lcase(Fields("file").FileName),".jpg")=0 かつ instr(1,lcase(Fields("file").FileName),".gif")=0 の場合
response.write "<script language='javascript'>alert('アップロードされる画像は gif または jpg 形式である必要があります')</script>"
response.write "<script language='javascript'>window.location='addemployee.asp';</script>"
応答.終了
end if
Fields("file").Length>500000 then
response.write "<script language='javascript'>alert('500k 以下の画像のみをアップロードできます');</script>"
response.write "<script language='javascript'>window.location='addemployee.asp';</script>"
応答.終了
end if
'/*データベースに保存*/
if Fields("file").FileName<>"" then
Set rs=Server.CreateObject("ADODB.Recordset")
sSql="ID 説明による従業員の注文から * を選択"
rs.open sSQL,conn,2,2
そうでない場合は、
iMaxid=Clng(rs("id"))+1
strlen=4-len(cstr(iMaxid))
strMaxid=string(strlen,"0") & cstr(iMaxid)
それ以外
strMaxid="0001"
終了する場合
rs.addnew
rs("id")=strMaxid
rs("タイトル")=strTitle
rs("ソート")=strSort(0)
rs("img").AppendChunk Fields("file").Value
rs("コンテンツ")=quoteChg(strContent)
rs("今日")=日付()
rs.アップデート
rs.close
response.write "<script language='javascript'>alert('レコードの追加に成功しました')</script>"
終了する場合
終了する場合
%>
************************************************ **********************
/*fupload.inc*/
<スクリプト RUNAT=サーバー言語=VBSCRIPT>
Dim UploadSizeLimit
'********************************** GetUpload ************ **********************
'.Name フォームフィールドの名前 (<Input Name="..." Type="File,...">)
'.ContentDisposition = フォームフィールドの Content-Disposition
'.FileName = <input type=file> のソース ファイル名
'.ContentType = <input type=file> の Content-Type
'.Value = ソースフィールドのバイナリ値。
'.Length = バイナリデータフィールドの Len
関数 GetUpload()
暗い結果
結果 = 何も設定しない
If Request.ServerVariables("REQUEST_METHOD") = "POST" then 'リクエスト メソッドは "POST" である必要があります
ディムCT、PosB、境界、長さ、PosE
CT = Request.ServerVariables("HTTP_Content_Type") 'Content-Type ヘッダーを読み取ります
'response.write CT
'application/x-www-form-urlencoded
If LCase(Left(CT, 19)) = "multipart/form-data" then 'Content-Type ヘッダーは "multipart/form-data" である必要があります
'これはアップロードリクエストです。
'Content-Typeヘッダーから境界と長さを取得します
PosB = InStr(LCase(CT), "boundary=") '境界を検索します
If PosB > 0 then Boundary = Mid(CT, PosB + 9) '境界を分離します
Length = CLng(Request.ServerVariables("HTTP_Content_Length")) 'Content-Length ヘッダーを取得
if "" & UploadSizeLimit<>"" then
アップロードサイズ制限 = clng(アップロードサイズ制限)
長さ > アップロードサイズ制限の場合
'エラー発生時は次を再開 '入力バッファをクリアします
'response.AddHeader "接続"、"閉じる"
' エラーで goto 0
Request.BinaryRead(長さ)
Err.Raise 2、「GetUpload」、「アップロード サイズ」 & FormatNumber(Length,0) & "B が制限を超えています。" & FormatNumber(UploadSizeLimit,0) & "B"
終了関数
終了する場合
end if
If Length > 0 And Boundary <> "" then 'アップロードに関して必要な情報はありますか?
境界 = "--" & 境界
ディムヘッド、バイナリ
Binary = Request.BinaryRead(Length) 'クライアントからバイナリ データを読み取ります
'バイナリ データからアップロード フィールドを取得します
結果 = SeparateFields(バイナリ、境界) を設定します。
Binary = Empty '変数をクリア
それ以外
Err.Raise 10、「GetUpload」、「長さゼロのリクエスト」。
終了の場合
それ以外
Err.Raise 11、「GetUpload」、「ファイルは送信されませんでした。」
終了の場合
それ以外
Err.Raise 1、「GetUpload」、「不正なリクエスト メソッドです。」
終了の場合
GetUpload = 結果を設定します
終了関数
'********************************** SeparateFields ************ **********************
'この関数はバイナリ データからアップロード フィールドを取得し、フィールドを配列として返します
'Binary は、入力からのすべての生のバイナリ データのセーフ配列です。
関数 SeparateFields(バイナリ、境界)
Dim PosOpenBoundary、PosCloseBoundary、PosEndOfHeader、isLastBoundary
薄暗いフィールド
Boundary = StringToBinary(境界)
PosOpenBoundary = InstrB(バイナリ, 境界)
PosCloseBoundary = InstrB(PosOpenBoundary + LenB(Boundary), Binary, Boundary, 0)
Set Fields = CreateObject("Scripting.Dictionary")
Do While (PosOpenBoundary > 0 かつ PosCloseBoundary > 0 And Not isLastBoundary)
'ヘッダーとファイル/ソースフィールドのデータ
Dim HeaderContent、FieldContent
'ヘッダーフィールド
Dim Content_Disposition、FormFieldName、SourceFileName、Content_Type
'補助変数
Dim フィールド、TwoCharsAfterEndBoundary
'ヘッダーの終わりを取得
PosEndOfHeader = InstrB(PosOpenBoundary + Len(Boundary), Binary, StringToBinary(vbCrLf + vbCrLf))
'フィールドヘッダーを区切ります
HeaderContent = MidB(Binary, PosOpenBoundary + LenB(Boundary) + 2, PosEndOfHeader - PosOpenBoundary - LenB(Boundary) - 2)
'フィールドコンテンツを分離します
FieldContent = MidB(Binary, (PosEndOfHeader + 4), PosCloseBoundary - (PosEndOfHeader + 4) - 2)
' ヘッダー フィールドをヘッダーから分離します
GetHeadFields BinaryToString(HeaderContent), Content_Disposition, FormFieldName, SourceFileName, Content_Type
' フィールドを 1 つ作成し、パラメーターを割り当てます
フィールドを設定 = CreateUploadField()
フィールド名 = フォームフィールド名
Field.ContentDisposition = Content_Disposition
フィールド.ファイルパス = ソースファイル名
フィールド.ファイル名 = Getファイル名(ソースファイル名)
Field.ContentType = Content_Type
フィールド.値 = フィールドコンテンツ
Field.Length = LenB(FieldContent)
Fields.Add FormFieldName, Field
'これは終了境界ですか?
TwoCharsAfterEndBoundary = BinaryToString(MidB(Binary, PosCloseBoundary + LenB(境界), 2))
'Binary.Mid(PosCloseBoundary + Len(境界), 2).String
isLastBoundary = TwoCharsAfterEndBoundary = "--"
If Not isLastBoundary then 'これは終了境界ではありません - 次のフォーム フィールドに進みます。
PosOpenBoundary = PosCloseBoundary
PosCloseBoundary = InStrB(PosOpenBoundary + LenB(境界), バイナリ, 境界 )
終了の場合
ループ
SeparateFields = フィールドを設定します
終了関数
'********************************** ユーティリティ ************ **********************
関数 BinaryToString(str)
ストラト = ""
i=1 から lenb(str) まで
AscB(MidB(str, i, 1)) > 127 の場合
strto = strto & chr(Ascb(MidB(str, i, 1))*256+Ascb(MidB(str, i+1, 1)))
i = i + 1
それ以外
strto = strto & Chr(AscB(MidB(str, i, 1)))
終了する場合
次
BinaryToString=strto
終了関数
Function StringToBinary(String)
ディムI、B
I=1 から len(String) の場合
B = B & ChrB(Asc(Mid(String,I,1)))
次
StringToBinary = B
End Function
'アップロードヘッダーからヘッダーフィールドを分離します
関数 GetHeadFields(ByVal Head, Content_Disposition, Name, FileName, Content_Type)
Content_Disposition = LTrim(SeparateField(Head, "content-disposition:", ";"))
名前 = (SeparateField(Head, "name=", ";")) 'ltrim
Left(名前, 1) = """" の場合、名前 = Mid(名前, 2, Len(名前) - 2)
ファイル名 = (SeparateField(Head, "ファイル名=", ";")) 'ltrim
Left(FileName, 1) = """" の場合、FileName = Mid(FileName, 2, Len(FileName) - 2)
Content_Type = LTrim(SeparateField(Head, "コンテンツ タイプ:", ";"))
End 関数
'sStart と sEnd の間の 1 つのフィールドを区切ります
関数 SeparateField(From、ByVal sStart、ByVal sEnd)
薄暗い PosB、PosE、sFrom
sFrom = LCase(From)
PosB = InStr(sFrom, sStart)
PosB > 0 の場合
PosB = PosB + Len(sStart)
PosE = InStr(PosB, sFrom, sEnd)
PosE = 0 の場合、PosE = InStr(PosB, sFrom, vbCrLf)
If PosE = 0 Then PosE = Len(sFrom) + 1
SeparateField = Mid(From, PosB, PosE - PosB)
それ以外
個別フィールド = 空
終了の場合
End Function
'ファイル名とファイルのフルパスを分離します
関数 GetFileName(フルパス)
ディムポジション、PosF
位置F = 0
Pos = Len(FullPath) の場合 1 ステップ -1
Case Mid(フルパス、位置、1) を選択
「/」、「」の場合:PosF = Pos + 1:Pos = 0
エンドセレクト
次
PosF = 0 の場合、PosF = 1
GetFileName = Mid(フルパス, PosF)
終了機能
</スクリプト>
<SCRIPT RUNAT=サーバー言語=JSCRIPT>
//関数は Field オブジェクトを作成します。
function CreateUploadField(){ return new uf_Init() }
関数 uf_Init(){
this.Name = null
this.ContentDisposition = null
this.FileName = null
this.FilePath = null
this.ContentType = null
this.Value = null
this.Length = null
}
</スクリプト>