ASP [#13] ส่งเมล์ด้วย ASP การ Uploads ไฟล์ผ่าน Browser การสร้างระบบ User Online การทำปุ่ม Print แบบรูปภาพ ปุ่ม Next และ Back
ส่งเมล์ด้วย ASP การส่งเมล์ด้วย asp ต้องอาศัย Component เพื่อช่วยในการทำงาน สามารถ downloads component ในหัวข้อ component ตัวอย่าง code การส่งเมล์ <% Set SMTPObj = CreateObject(“NU.SMTP") ' เป็น Component ที่ใช้ส่งเมล์ SMTPObj.SMTPServer = "Mail.nu.ac.th" ' mail server SMTPObj.ToAdd = "exam@domain.com" SMTPObj.FromAdd = "Webmaster@nu.ac.th" SMTPObj.Subject = "ทดสอบการส่งเมล์" SMTPObj.Body = "ได้รับแล้วตอบเมล์ด้วยเด้อ" SMTPObj.Connect result = SMTPObj.EMail Response.write "Sent " & result SMTPObj.Quit %>
การ Uploads ไฟล์ผ่าน Browser uploads ไฟล์ขึ้นไปบน Server เก็บใว้ในที่ที่ต้องการ หลักการ สามารถ Uplodas ไฟล์รูปภาพ หรือไฟล์อื่น ๆ ได้ ขึ้นอยู่แต่ว่าจะกำหนดให้สามารถ Uploads ไฟล์ Format ใดบ้าง ตัวอย่างที่จะทำต่อไปนี้ เป็นเพียงการ uploadsรูปภาพ ลง Folder เท่านั้น ส่วนประกอบของไฟล์ - Sample1.asp ( Page สำหรับ เลือกไฟล์ที่จะ uploads ) - Sample2.asp ( page สำหรับทำการ uploads ) - uploads.asp ( เป็น คำสั่งในการเปลี่ยนข้อมูลให้อยู่ในรูป Binary เพื่อใช้แทน Component สำหรับ uploads )
ขั้นที่ 1 สร้าง Folder picture เพื่อใว้เก็บไฟล์ต่าง ๆ ขั้นที่ 2 ให้ Copy Code ต่อไปนี้ แล้ว Save เป็น uploads.asp
Uploads.asp <% Function TextToBinary(text) For i=1 to Len(text) character=Mid(text,i,1) TextToBinary=TextToBinary & ChrB(Asc(character)) Next End Function Function BinaryToText(Binary) BinaryToText="" For i=1 to LenB(Binary) character=MidB(Binary,i,1) BinaryToText=BinaryToText & Chr(AscB(character)) Next End Function Set uploaddata=CreateObject("Scripting.Dictionary") data=Request.BinaryRead(Request.TotalBytes) posend=InStrB(1,data,TextToBinary(Chr(13))) header=MidB(data,1,posend-1) endheader=header&TextToBinary("_") pos_header=1 pos_endheader=InStrB(1,data,endheader) Do While pos_header<>pos_endheader Set sub_uploaddata=CreateObject("Scripting.Dictionary") pos_name=InStrB(pos_header,data,TextToBinary("name=")) pos_namebegin=pos_name+6
Uploads.asp (ต่อ) pos_nameend=InStrB(pos_namebegin,data,TextToBinary(Chr(34))) name=BinaryToText(MidB(data,pos_namebegin,pos_nameend-pos_namebegin)) pos_file=InStrB(pos_nameend,data,TextToBinary("filename=")) enddata=InStrB(pos_nameend,data,header) If (pos_file<>0)And(pos_file<enddata) Then pos_filebegin=pos_file+10 pos_fileend=InStrB(pos_filebegin,data,TextToBinary(Chr(34))) filename=BinaryToText(MidB(data,pos_filebegin,pos_fileend-pos_filebegin)) sub_uploaddata.Add "filename",filename pos_content=InStrB(pos_fileend,data,TextToBinary("Content-Type:")) pos_contentbegin=pos_content+14 pos_contentend=InStrB(pos_contentbegin,data,TextToBinary(Chr(13))) contenttype=BinaryToText(MidB(data,pos_contentbegin,pos_contentend-pos_contentbegin)) sub_uploaddata.Add "contenttype",contenttype pos_valuebegin=pos_contentend+4 pos_valueend=InStrB(pos_valuebegin,data,header)-2 Value=BinaryToText(MidB(data,pos_valuebegin,pos_valueend-pos_valuebegin)) sub_uploaddata.Add "value",value Else pos_valuebegin=pos_nameend+4 pos_valueend=InStrB(pos_valuebegin,data,header)-2 Value=BinaryToText(MidB(data,pos_valuebegin,pos_valueend-pos_valuebegin)) sub_uploaddata.Add "value",value End If uploaddata.Add name,sub_uploaddata pos_header=InStrB(pos_header+LenB(header),data,header) Loop %>
Sample1.asp <html> <body bgcolor="#FFFFFF"> <form name="form1" method="post" action="Sample2.asp" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="Submit" value="Uploads"> </form> </body> </html>
Sample2.asp <html> <body bgcolor="#FFFFFF"> <% bytecount=Request.TotalBytes If bytecount<80000 Then ' กำหนดขนาดไฟล์ไม่เกิน 80 K %> <!--#Include File="uploads.asp"--> <% filename=uploaddata.Item("file").Item("filename") pos_filebegin=InStrRev(filename,"\") pos_fileend=Len(filename) filename_new=Mid(filename,pos_filebegin+1,pos_fileend-pos_filebegin) ' กำหนด ประเภทของไฟล์ที่จะ สามารถ uploads ได้ If Instr(filename_new,".jpg")<>0 Or Instr(filename_new,".gif")<>0 Or Instr(filename_new,".jpeg")<>0 Then Set fs=Server.CreateObject("Scripting.FileSystemObject") Set uploadfile=fs.CreateTextFile(Server.Mappath("picture"&"/"&filename_new)) uploadfile.Write uploaddata.Item("file").Item("value") Response.write(" Uploads ไฟล์สำเร็จ ") Response.write("<br> ไฟล์ชื่อ " &filename_new)
Sample2.asp (ต่อ) ' หากต้องการ นำชื่อไฟล์ไปเก็บใว้ในฐานข้อมูล ให้ทำการ Add ชื่อไฟล์ filename_new ลงในฐานข้อมูล จากนั้นเมื่อต้องการนำรูปภาพมาแสดง ' ให้อ้างอิง Path Picture/filename_new uploadfile.Close set fs=Nothing Else %> กรุณาเลือกไฟล์นามสกุล .gif , .jpg , หรือ jpeg เท่านั้น <br> กลับไปแก้ไข <a href="javascript:history.back()">คลิกที่นี่</a> <% End If Else %> ขนาดไฟล์เกิน 80 KB กรุณาเลือกไฟล์ใหม่<br> <br> กลับไปแก้ไข <a href="javascript:history.back()">คลิกที่นี่</a> <% End If %> </body> </html>
นอกจากนี้ยังสามารถประยุกต์ใช้กับฐานข้อมูล หลักการก็ไม่ยากให้เก็บชื่อไฟล์ลงในฐานข้อมูล ซึ่งเรียนรู้คำสั่งการเพิ่มข้อมูลได้จากหัวข้อที่ผ่านมา เมื่อต้องการนำรูปภาพมาแสดงก็แค่อ้าง folder/ชื่อไฟล์ ก็จะได้รูปภาพที่ต้องการออกมา
การแสดงข้อมูลจาก list menu Sam10-2.asp <html> <body bgcolor="#FFFFFF"> <% Set Connect_DB=Server.CreateObject("ADODB.Connection") Connect_DB.Open "Driver=Microsoft Access Driver (*.mdb);DBQ="& Server.MapPath("db/mydatabase.mdb") sql="Select * from month" Set Rs=Connect_DB.execute(sql) %> <form name="form1" method="post" action="Sample2.asp"> เลือกเดือน <select name="select"> <option>กรุณาเลือกเดือน</option> <%while Not Rs.EOF%> <option value="<% =Rs("id")%>"><% =Rs("month")%></option> <%Rs.MoveNext wend %> </select> <input type="submit" name="Submit" value="ตกลง"> </form> </body> </html>
การทำปุ่ม Print แบบรูปภาพ รูปแบบ <input type="image" src="รูปภาพ" onClick="window.print()"> Sample <input type="image" src="images/print.gif" onClick="window.print()"> หรือ <input type="submit" name="Submit" value="Print" onClick="window.print()"> Print
ปุ่ม Next และ Back Next Back <input type="submit" name="Submit" value="Next > >" onClick="jascript:history.go(+1)"> Back <input type="submit" name="Submit" value="< < Back"onClick="jascript:history.go(-1)"> Next>> <<Back
แบบ Link <a href="javascript:history.back()"><< Back</a> ปุ่ม Close <a href="javascript:window.close()">ปิดหน้าต่างนี้ </a>
แบบฝึกหัด Login.asp Upload_img.asp Menu.asp ShowImage.asp เมื่อเข้าได้แล้วให้จำลองเมนู และแสดงจำนวน User online โดยต้อง Upload และแสดงภาพได้จาก Database Database ประกอบด้วย ID, Name , Picfile User :: Password :: Id Name :: Somchai Submit Name เพิ่มรูป Browse Login.asp Submit Upload_img.asp Hi Sanya... Add Person Name Picture Show Images Somchai Somyong User 2 Onlines Menu.asp ShowImage.asp