ฉันเพิ่งลองอัปโหลดส่วนประกอบที่ไม่มีส่วนประกอบได้สำเร็จ ดังนั้นฉันจึงให้โค้ดเพื่อแชร์กับทุกคน
/* 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
returnValue=window.showModalDialog("selMode.htm",null,"center:1;status:0;help:0;resize:0;dialogheight:300px;dialogwidth:206px");
ถ้า (returnValue!="" && returnValue!=null){
txtSubject.value=returnValue
-
-
//////////////////////////////////////////////// ///////////////////////////
//ตรวจสอบความถูกต้องตามกฎหมาย
ฟังก์ชั่น isOK (แบบฟอร์มนี้) {
var strTemp,strValue,strLen,strExName
ถ้า(thisForm.txtTitle.value==""){
alert("เคล็ดลับ: ชื่อไม่สามารถเว้นว่างได้ กรุณากรอกให้ถูกต้อง")
thisForm.txtTitle.โฟกัส()
กลับเท็จ
-
ถ้า(thisForm.txtSort.value==""){
alert("คำแนะนำ: โปรดเลือกหมวดหมู่ที่ถูกต้อง")
thisForm.txtSort.โฟกัส ()
กลับเท็จ
-
/*ตรวจสอบประเภทรูปภาพ*/
ถ้า(thisForm.file.value!=""){
strTemp=thisForm.file.value
strValue=strTemp.toLowerCase()
strLen=strTemp.ความยาว
strExName=strValue.substring(strLen-4,strLen)
ถ้า (strExName!=".jpg" && strExName!=".gif"){
alert("กรุณาเลือกไฟล์ jpg หรือ gif!")
กลับเท็จ
-
กลับเป็นจริง
-
-
-
</script>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="1" topmargin="1">
<ชื่อแบบฟอร์ม = "form1" method = "โพสต์" action = "transact1.asp" enctype = "หลายส่วน/แบบฟอร์มข้อมูล">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="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" แถว="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="ซ้าย">
<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>
</ตาราง>
</แบบฟอร์ม>
</ร่างกาย>
</html>
************************************************** * ***********************
/* transact1.asp*/
<!--#include file="../func/conn.inc"-->
<!--#include file="../func/fupload.inc"-->
<!--#include file="../func/myfunctions.inc"-->
-
ถ้า Request.ServerVariables("REQUEST_METHOD") = "POST" จากนั้น
ทุ่งสลัว
หรี่ strTitle,strSort,strContent
rs, sql จาง
ดิม ไอแม็กซิด
ดิม สเตรแม็กซิด
สเตรเลนสลัว
ตั้งค่าฟิลด์ = GetUpload()
strTitle=BinaryToString(ฟิลด์("txtTitle").value)
strSort=BinaryToString(ฟิลด์("txtSort").value)
strContent=BinaryToString(ฟิลด์("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>"
การตอบกลับสิ้นสุด
สิ้นสุด if
if Fields("file").Length>500000 แล้ว
response.write "<script language='javascript'>alert('อนุญาตให้อัปโหลดเฉพาะรูปภาพที่มีขนาดไม่เกิน 500k เท่านั้น');</script>"
response.write "<script language='javascript'>window.location='addemployee.asp';</script>"
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
'/*บันทึกลงฐานข้อมูล*/
ถ้า Fields("file").FileName<>"" แล้ว
ตั้งค่า rs=Server.CreateObject("ADODB.Recordset")
sSql="select * จากคำสั่งพนักงานโดยระบุรหัส"
rs.open sSql,conn,2,2
ถ้าไม่ใช่ rs.eof แล้ว
iMaxid=Clng(rs("id"))+1
strlen=4-len(cstr(iMaxid))
strMaxid=string(strlen,"0") & cstr(iMaxid)
อื่น
strMaxid="0001"
สิ้นสุดถ้า
rs.เพิ่มใหม่
rs("id")=strMaxid
rs("title")=strTitle
rs("เรียงลำดับ")=strSort(0)
rs("img").AppendChunk Fields("file").Value
rs("เนื้อหา")=quoteChg(strContent)
อาร์เอส("todate")=วันที่()
อาร์เอสอัปเดต
฿.ปิด
response.write "<script language='javascript'>alert('เพิ่มบันทึกเรียบร้อยแล้ว')</script>"
สิ้นสุดถ้า
สิ้นสุดถ้า
%>
************************************************ **********************
/*fupload.inc*/
<SCRIPT RUNAT=ภาษาเซิร์ฟเวอร์=VBSCRIPT>
Dim UploadSizeLimit
'************************************ GetUpload ************ **********************
'.ชื่อของฟิลด์แบบฟอร์ม (<Input Name="..." Type="File,...">)
'.ContentDisposition = การจัดการเนื้อหาของฟิลด์แบบฟอร์ม
'.FileName = ชื่อไฟล์ต้นฉบับสำหรับ <input type=file>
'.ContentType = ประเภทเนื้อหาสำหรับ <input type=file>
'.Value = ค่าไบนารี่ของฟิลด์แหล่งที่มา
'.Length = Len ของเขตข้อมูลไบนารี
ฟังก์ชัน GetUpload()
ผลลัพธ์สลัว
กำหนดผลลัพธ์ = ไม่มีเลย
ถ้า Request.ServerVariables("REQUEST_METHOD") = "POST" ดังนั้น 'วิธีการร้องขอต้องเป็น "POST"
Dim CT, PosB, ขอบเขต, ความยาว, PosE
CT = Request.ServerVariables("HTTP_Content_Type") 'อ่านส่วนหัวของประเภทเนื้อหา
'response.write CT
'application/x-www-form-urlencoded
ถ้า LCase(Left(CT, 19)) = "multipart/form-data" ดังนั้น 'Content-Type header must be "multipart/form-data"
'นี่คือคำขออัปโหลด
'รับขอบเขตและความยาวจากส่วนหัว Content-Type
PosB = InStr(LCase(CT), "boundary=") 'ค้นหาขอบเขต
ถ้า PosB > 0 ดังนั้น ขอบเขต = กลาง(CT, PosB + 9) 'แยกขอบเขต
ความยาว = CLng (Request.ServerVariables ("HTTP_Content_Length")) 'รับส่วนหัวความยาวเนื้อหา
ถ้า "" & UploadSizeLimit<>"" แล้ว
UploadSizeLimit = clng(UploadSizeLimit)
ถ้าความยาว > UploadSizeLimit แล้ว
'เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ถัดไป' ล้างบัฟเฟอร์อินพุต
' response.AddHeader "การเชื่อมต่อ", "ปิด"
' บนข้อผิดพลาดไปที่ 0
คำขอ BinaryRead (ความยาว)
Err.Raise 2, "GetUpload", "ขนาดอัพโหลด" & FormatNumber(Length,0) & "B เกินขีดจำกัดของ" & FormatNumber(UploadSizeLimit,0) & "B"
ฟังก์ชั่นทางออก
สิ้นสุดถ้า
สิ้นสุดถ้า
If ความยาว > 0 และขอบเขต <> "" แล้ว 'มีข้อมูลที่จำเป็นเกี่ยวกับการอัพโหลดหรือไม่?
ขอบเขต = "--" & ขอบเขต
ดิมเฮด, ไบนารี่
Binary = Request.BinaryRead(Length) 'อ่านข้อมูลไบนารี่จากไคลเอนต์
'ดึงฟิลด์อัพโหลดจากข้อมูลไบนารี
กำหนดผลลัพธ์ = SeparateFields(ไบนารี, ขอบเขต)
ไบนารี = ว่าง 'ล้างตัวแปร
อื่น
Err.Raise 10, "GetUpload", "คำขอความยาวเป็นศูนย์"
สิ้นสุดถ้า
อื่น
ข้อผิดพลาดยก 11, "GetUpload", "ไม่มีไฟล์ที่ส่ง"
สิ้นสุดถ้า
อื่น
Err.Raise 1, "GetUpload", "วิธีการร้องขอไม่ถูกต้อง"
สิ้นสุดถ้า
ตั้งค่า GetUpload = ผลลัพธ์
สิ้นสุดฟังก์ชัน
'************************************ SeparateFields ************ **********************
'ฟังก์ชันนี้จะดึงข้อมูลฟิลด์ที่อัปโหลดจากข้อมูลไบนารี่และส่งคืนฟิลด์เป็นอาร์เรย์
'ไบนารี่คือระบบรักษาความปลอดภัยของข้อมูลไบนารี่ดิบทั้งหมดจากอินพุต
ฟังก์ชั่น SeparateFields (ไบนารี, ขอบเขต)
Dim PosOpenBoundary, PosCloseBoundary, PosEndOfHeader, isLastBoundary
ทุ่งสลัว
ขอบเขต = StringToBinary(ขอบเขต)
PosOpenBoundary = InstrB(Binary, ขอบเขต)
PosCloseBoundary = InstrB(PosOpenBoundary + LenB(Boundary), Binary, Boundary, 0)
Set Fields = CreateObject("Scripting.Dictionary")
Do While (PosOpenBoundary > 0 และ PosCloseBoundary > 0 และไม่ใช่ isLastBoundary)
'ข้อมูลฟิลด์ส่วนหัวและไฟล์/แหล่งที่มา'
Dim HeaderContent, FieldContent
'ฟิลด์ส่วนหัว
Dim Content_Disposition, FormFieldName, SourceFileName, Content_Type
'ช่วยตัวแปร
ฟิลด์ติ่มซำ, 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
'สร้างหนึ่งฟิลด์และกำหนดพารามิเตอร์
ตั้งค่าฟิลด์ = CreateUploadField()
Field.Name = FormFieldName
Field.ContentDisposition = Content_Disposition
Field.FilePath = SourceFileName
Field.FileName = GetFileName(SourceFileName)
Field.ContentType = Content_Type
Field.Value = เนื้อหาฟิลด์
Field.Length = LenB(FieldContent)
Fields.Add FormFieldName, ฟิลด์
'นี่คือขอบเขตสิ้นสุดหรือไม่?
TwoCharsAfterEndBoundary = BinaryToString(MidB(Binary, PosCloseBoundary + LenB(ขอบเขต), 2))
'Binary.Mid(PosCloseBoundary + Len (ขอบเขต), 2).String
isLastBoundary = TwoCharsAfterEndBoundary = "--"
หากไม่ใช่ isLastBoundary ดังนั้น 'นี่ไม่ใช่ขอบเขตที่สิ้นสุด - ไปที่ฟิลด์แบบฟอร์มถัดไป
PosOpenBoundary = PosCloseBoundary
PosCloseBoundary = InStrB(PosOpenBoundary + LenB(ขอบเขต), ไบนารี, ขอบเขต )
สิ้นสุดถ้า
วนซ้ำ
ตั้งค่า SeparateFields = ฟิลด์
สิ้นสุดฟังก์ชั่น
'************************************ ยูทิลิตี้ ************ **********************
ฟังก์ชั่น BinaryToString(str)
strto = ""
สำหรับ 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)))
ฉัน = ฉัน + 1
อื่น
strto = strto & Chr(AscB(MidB(str, i, 1)))
สิ้นสุดถ้า
ต่อไป
BinaryToString=strto
ฟังก์ชันสิ้นสุด
ฟังก์ชัน StringToBinary(สตริง)
ดิม ไอ, บี
สำหรับ I=1 ถึง len(String)
B = B & ChrB(Asc(กลาง(สตริง,I,1)))
ต่อไป
StringToBinary = B
ฟังก์ชันสิ้นสุด
'แยกฟิลด์ส่วนหัวออกจากส่วนหัวการอัปโหลด
ฟังก์ชัน GetHeadFields (ByVal Head, Content_Disposition, ชื่อ, ชื่อไฟล์, Content_Type)
Content_Disposition = LTrim(SeparateField(Head, "การจัดการเนื้อหา:", ";"))
Name = (SeparateField(Head, "name=", ";")) 'ltrim
ถ้า ซ้าย(ชื่อ, 1) = """" ดังนั้น ชื่อ = กลาง(ชื่อ, 2, เลน(ชื่อ) - 2)
FileName = (SeparateField(Head, "filename=", ";")) 'ltrim
ถ้าซ้าย (ชื่อไฟล์, 1) = """" จากนั้นชื่อไฟล์ = กลาง (ชื่อไฟล์, 2, Len (ชื่อไฟล์) - 2)
Content_Type = LTrim(SeparateField(Head, "content-type:", ";"))
ฟังก์ชั่นสิ้นสุด
'แยกหนึ่งไฟล์ระหว่าง sStart และ sEnd
ฟังก์ชั่น SeparateField (จาก, ByVal sStart, ByVal sEnd)
Dim PosB, PosE, sFrom
sFrom = LCase(จาก)
PosB = InStr(sจาก, sStart)
ถ้า PosB > 0 แล้ว
PosB = PosB + Len(sStart)
PosE = InStr(PosB, sFrom, sEnd)
ถ้า PosE = 0 ดังนั้น PosE = InStr(PosB, sFrom, vbCrLf)
ถ้า PosE = 0 ดังนั้น PosE = Len(sFrom) + 1
SeparateField = กลาง (จาก, PosB, PosE - PosB)
อื่น
SeparateField = ว่างเปล่า
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
'แยกชื่อไฟล์ออกจากเส้นทางแบบเต็มของไฟล์
ฟังก์ชัน GetFileName(FullPath)
ดิม โพส, โพสเอฟ
PosF = 0
สำหรับ Pos = Len(FullPath) ถึง 1 ขั้นตอน -1
เลือกกรณีกลาง (FullPath, Pos, 1)
กรณี "/", "": PosF = Pos + 1: Pos = 0
สิ้นสุดการเลือก
ต่อไป
ถ้า PosF = 0 ดังนั้น PosF = 1
GetFileName = กลาง (FullPath, PosF)
ฟังก์ชันสิ้นสุด
</สคริปต์>
<SCRIPT RUNAT=ภาษาเซิร์ฟเวอร์=JSCRIPT>
//ฟังก์ชันสร้างวัตถุ Field
ฟังก์ชั่น CreateUploadField(){ ส่งคืน uf_Init() ใหม่ }
ฟังก์ชั่น uf_Init(){
นี้.ชื่อ = null
this.ContentDisposition = null
this.FileName = null
this.FilePath = null
this.ContentType = null
this.Value = null
นี่ความยาว = null
-
</สคริปต์>