ฟังก์ชันนี้สามารถใช้ได้ระหว่างการรวบรวมหรือเมื่อเพิ่มบทความออนไลน์
โค้ดที่ฉันค้นหาบน Baidu เพื่อบันทึกภาพระยะไกลไปยังพื้นที่ท้องถิ่นดูเหมือนจะใช้งานยากนิดหน่อย และไม่มีโค้ดสำเร็จรูปและสมบูรณ์ที่ฉันไม่เข้าใจ
ฉันแยกฟังก์ชั่นบางอย่างจากระบบรวบรวมข่าว SNA สำหรับ 3.62 (ตั้งโปรแกรมโดย: ansir) และใช้งานซึ่งค่อนข้างง่ายและใช้งานง่าย
ต่อไปนี้เป็นฟังก์ชัน
รหัสโปรแกรม
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'=================================================' ==
'ชื่อฟังก์ชัน: CheckDir2
'ฟังก์ชั่น: ตรวจสอบว่ามีโฟลเดอร์อยู่หรือไม่
'พารามิเตอร์: FolderPath ------ ที่อยู่โฟลเดอร์
'=================================================' ==
ฟังก์ชั่น CheckDir2 (byval FolderPath)
สลัว fso
folderpath=Server.MapPath(.)&/&folderpath
ตั้งค่า fso = Server.CreateObject (Scripting.FileSystemObject)
ถ้า fso.FolderExists(FolderPath) แล้ว
'มีอยู่
CheckDir2 = จริง
อื่น
'ไม่มีอยู่จริง
CheckDir2 = เท็จ
จบถ้า
ตั้งค่า fso = ไม่มีเลย
สิ้นสุดฟังก์ชัน
'=================================================' ==
'ชื่อฟังก์ชัน: MakeNewsDir2
'ฟังก์ชัน: สร้างโฟลเดอร์ใหม่'
'พารามิเตอร์: ชื่อโฟลเดอร์ ------ ชื่อโฟลเดอร์
'=================================================' ==
ฟังก์ชั่น MakeNewsDir2 (ชื่อโฟลเดอร์ byval)
สลัว fso
ตั้งค่า fso = Server.CreateObject (Scripting.FileSystemObject)
fso.CreateFolder(Server.MapPath(.) &/ &ชื่อโฟลเดอร์)
ถ้า fso.FolderExists(Server.MapPath(.) &/ &foldername) แล้ว
MakeNewsDir2 = จริง
อื่น
MakeNewsDir2 = เท็จ
สิ้นสุดถ้า
ตั้งค่า fso = ไม่มีเลย
สิ้นสุดฟังก์ชัน
'=================================================' ==
'ชื่อฟังก์ชัน: DefiniteUrl
'ฟังก์ชั่น: แปลงที่อยู่สัมพัทธ์ให้เป็นที่อยู่ที่แน่นอน
'พารามิเตอร์: PrimitiveUrl ------ ที่อยู่ที่เกี่ยวข้องที่จะแปลง
'พารามิเตอร์: ConsultUrl ------ ที่อยู่หน้าเว็บปัจจุบัน
'=================================================' ==
ฟังก์ชั่น DefiniteUrl (Byval PrimitiveUrl, Byval ConsultUrl)
หรี่ ConTemp, PriTemp, Pi, Ci, PriArray, ConArray
ถ้า PrimitiveUrl= หรือ ConsultUrl= หรือ PrimitiveUrl=$False$ จากนั้น
URL ที่ชัดเจน=$False$
ออกจากฟังก์ชัน
สิ้นสุดถ้า
ถ้าซ้าย(ConsultUrl,7)<>HTTP:// และซ้าย(ConsultUrl,7)<>http:// จากนั้น
ConsultUrl= http:// & ConsultUrl
สิ้นสุดถ้า
ConsultUrl=แทนที่(ConsultUrl,://,://)
ถ้าใช่(ConsultUrl,1)<>/ จากนั้น
ถ้า Instr(ConsultUrl,/)>0 แล้ว
ถ้า Instr(Right(ConsultUrl,Len(ConsultUrl)-InstrRev(ConsultUrl,/)),.)>0 แล้ว
อื่น
ConsultUrl=ConsultUrl & /
สิ้นสุดถ้า
อื่น
ConsultUrl=ConsultUrl & /
สิ้นสุดถ้า
สิ้นสุดถ้า
ConArray=แยก(ConsultUrl,/)
ถ้า Left(PrimitiveUrl,7) = http:// แล้ว
DefiniteUrl=แทนที่(PrimitiveUrl,://,://)
ElseIf ซ้าย(PrimitiveUrl,1) = / จากนั้น
DefiniteUrl=ConArray(0) & PrimitiveUrl
ElseIf ซ้าย(PrimitiveUrl,2)=./ จากนั้น
DefiniteUrl=ConArray(0) & ขวา(PrimitiveUrl,Len(PrimitiveUrl)-1)
ElseIf Left(PrimitiveUrl,3)=../ จากนั้น
ทำในขณะที่ซ้าย(PrimitiveUrl,3)=../
PrimitiveUrl=ขวา(PrimitiveUrl,Len(PrimitiveUrl)-3)
ปี่=ปี่+1
วนซ้ำ
สำหรับ Ci=0 ถึง (Ubound(ConArray)-1-Pi)
ถ้า DefiniteUrl<> จากนั้น
DefiniteUrl=DefiniteUrl & / & ConArray(Ci)
อื่น
DefiniteUrl=ConArray(Ci)
สิ้นสุดถ้า
ต่อไป
DefiniteUrl=DefiniteUrl & / & PrimitiveUrl
อื่น
ถ้า Instr(PrimitiveUrl,/)>0 แล้ว
PriArray=แยก(PrimitiveUrl,/)
ถ้า Instr(PriArray(0),.)>0 แล้ว
ถ้าใช่(PrimitiveUrl,1)=/ จากนั้น
DefiniteUrl=http:// & PrimitiveUrl
อื่น
ถ้า Instr(PriArray(Ubound(PriArray)-1),.)>0 แล้ว
DefiniteUrl=http:// & PrimitiveUrl
อื่น
DefiniteUrl=http:// & PrimitiveUrl & /
สิ้นสุดถ้า
สิ้นสุดถ้า
อื่น
ถ้าใช่(ConsultUrl,1)=/ จากนั้น
DefiniteUrl=ConsultUrl & PrimitiveUrl
อื่น
DefiniteUrl=ซ้าย(ConsultUrl,InstrRev(ConsultUrl,/)) & PrimitiveUrl
สิ้นสุดถ้า
สิ้นสุดถ้า
อื่น
ถ้า Instr(PrimitiveUrl,.)>0 แล้ว
ถ้าใช่(ConsultUrl,1)=/ จากนั้น
ถ้า right(PrimitiveUrl,3)=.cn หรือ right(PrimitiveUrl,3)=com หรือ right(PrimitiveUrl,3)=net หรือ right(PrimitiveUrl,3)=org จากนั้น
DefiniteUrl=http:// & PrimitiveUrl & /
อื่น
DefiniteUrl=ConsultUrl & PrimitiveUrl
สิ้นสุดถ้า
อื่น
ถ้า right(PrimitiveUrl,3)=.cn หรือ right(PrimitiveUrl,3)=com หรือ right(PrimitiveUrl,3)=net หรือ right(PrimitiveUrl,3)=org จากนั้น
DefiniteUrl=http:// & PrimitiveUrl & /
อื่น
DefiniteUrl=ซ้าย(ConsultUrl,InstrRev(ConsultUrl,/)) & / & PrimitiveUrl
สิ้นสุดถ้า
สิ้นสุดถ้า
อื่น
ถ้าใช่(ConsultUrl,1)=/ จากนั้น
DefiniteUrl=ConsultUrl & PrimitiveUrl & /
อื่น
DefiniteUrl=ซ้าย(ConsultUrl,InstrRev(ConsultUrl,/)) & / & PrimitiveUrl & /
สิ้นสุดถ้า
สิ้นสุดถ้า
สิ้นสุดถ้า
สิ้นสุดถ้า
ถ้า Left(DefiniteUrl,1)=/ แล้ว
DefiniteUrl=ขวา(DefiniteUrl,Len(DefiniteUrl)-1)
จบถ้า
ถ้า DefiniteUrl<> จากนั้น
DefiniteUrl=แทนที่(DefiniteUrl,//,/)
DefiniteUrl=แทนที่(DefiniteUrl,://,://)
อื่น
URL ที่ชัดเจน=$False$
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
'=================================================' ==
'ชื่อฟังก์ชัน:แทนที่SaveRemoteFile
'ฟังก์ชั่น: แทนที่และบันทึกไฟล์ระยะไกล
'พารามิเตอร์: ConStr ------ สตริงที่จะถูกแทนที่
'พารามิเตอร์: StarStr ----- ชั้นนำ
'พารามิเตอร์: OverStr -----
'พารามิเตอร์: รวม ------
'พารามิเตอร์: รวม ------
'พารามิเตอร์: SaveTf ------ ไม่ว่าจะบันทึกไฟล์, False ไม่บันทึก, True บันทึก
'พารามิเตอร์: SaveFilePath-บันทึกโฟลเดอร์'
'พารามิเตอร์: TistUrl------ ที่อยู่หน้าเว็บปัจจุบัน
'=================================================' ==
ฟังก์ชัน แทนที่SaveRemoteFile (ConStr, StartStr, OverStr, IncluL, IncluR, SaveTf, SaveFilePath, TistUrl)
ถ้า ConStr=$False$ หรือ ConStr= จากนั้น
แทนที่SaveRemoteFile=$False$
ออกจากฟังก์ชัน
สิ้นสุดถ้า
Dim TempStr, TempStr2, ReF, แมตช์, แมตช์, Tempi, TempArray, TempArray2, OverTypeArray
ตั้งค่า ReF = Regexp ใหม่
ReF.IgnoreCase = จริง
Ref.Global = จริง
Ref.Pattern = (&StartStr&).+?(&OverStr&)
ตั้งค่าการจับคู่ =ReF.Execute(ConStr)
สำหรับการแข่งขันแต่ละครั้งในการแข่งขัน
ถ้า Instr(TempStr,Match.Value)=0 แล้ว
ถ้า TempStr<> แล้ว
TempStr=TempStr & $Array$ & Match.Value
อื่น
TempStr=Match.Value
จบถ้า
สิ้นสุดถ้า
ต่อไป
ตั้งค่าการจับคู่ = ไม่มีอะไรเลย
ตั้งค่า ReF=nothing
ถ้า TempStr= หรือ IsNull(TempStr)=True จากนั้น
แทนที่SaveRemoteFile=ConStr
ฟังก์ชั่นออก
จบถ้า
ถ้า IncluL=False แล้ว
TempStr=แทนที่(TempStr,StartStr,)
จบถ้า
ถ้า InclR=False แล้ว
ถ้า Instr(OverStr,|)>0 แล้ว
OverTypeArray=แยก(OverStr,|)
สำหรับ Tempi=0 ถึง Ubound(OverTypeArray)
TempStr=แทนที่(TempStr,OverTypeArray(Tempi),)
ต่อไป
อื่น
TempStr=แทนที่(TempStr,OverStr,)
สิ้นสุดถ้า
จบถ้า
TempStr=แทนที่(TempStr,,)
TempStr=แทนที่(TempStr,',)
Dim RemoteFile, RemoteFileurl, SaveFileName, SaveFileType, ArrSaveFileName, RanNum
ถ้า Right(SaveFilePath,1)=/ แล้ว
SaveFilePath=ซ้าย(SaveFilePath,Len(SaveFilePath)-1)
สิ้นสุดถ้า
ถ้า SaveTf=True แล้ว
ถ้า CheckDir2(SaveFilePath)=False แล้ว
ถ้า MakeNewsDir2(SaveFilePath)=False แล้ว
SaveTf=เท็จ
สิ้นสุดถ้า
สิ้นสุดถ้า
สิ้นสุดถ้า
SaveFilePath=SaveFilePath & /
'การแปลง/บันทึกรูปภาพ
TempArray=แยก(TempStr,$Array$)
สำหรับ Tempi=0 ถึง Ubound(TempArray)
RemoteFileurl=DefiniteUrl(TempArray(Tempi),TistUrl)
ถ้า RemoteFileurl<>$False$ และ SaveTf=True ให้บันทึกรูปภาพ
ArrSaveFileName = แยก (RemoteFileurl,.)
SaveFileType=ArrSaveFileName(Ubound(ArrSaveFileName))'ประเภทไฟล์
RanNum=Int(900*Rnd)+100
SaveFileName = SaveFilePath&ปี(ตอนนี้)&เดือน(ตอนนี้)&วัน(ตอนนี้)&ชั่วโมง(ตอนนี้)&นาที(ตอนนี้)&วินาที(ตอนนี้)&ranNum&.&SaveFileType
โทร SaveRemoteFile (SaveFileName, RemoteFileurl)
ConStr=แทนที่(ConStr,TempArray(Tempi),SaveFileName)
ElseIf RemoteFileurl<>$False$ และ SaveTf=False จากนั้นอย่าบันทึกรูปภาพ
SaveFileName=RemoteFileUrl
ConStr=แทนที่(ConStr,TempArray(Tempi),SaveFileName)
สิ้นสุดถ้า
ถ้า RemoteFileUrl<>$False$ แล้ว
ถ้า UploadFiles= แล้ว
UploadFiles=SaveFileName
อื่น
UploadFiles=อัพโหลดไฟล์ & |. & บันทึกไฟล์ชื่อ
จบถ้า
สิ้นสุดถ้า
ต่อไป
แทนที่SaveRemoteFile=ConStr
สิ้นสุดฟังก์ชัน
'=================================================' ==
'ชื่อกระบวนการ: SaveRemoteFile
'ฟังก์ชัน: บันทึกไฟล์ระยะไกลลงในเครื่อง'
'พารามิเตอร์: LocalFileName ------ ชื่อไฟล์ในเครื่อง
'พารามิเตอร์: RemoteFileUrl ------ URL ไฟล์ระยะไกล
'=================================================' ==
ย่อย SaveRemoteFile (LocalFileName, RemoteFileUrl)
โฆษณาสลัว, การดึงข้อมูล, GetRemoteData
ตั้งค่าการเรียกข้อมูล = Server.CreateObject(Microsoft.XMLHTTP)
ด้วยการเรียกค้น
.เปิดรับ, RemoteFileUrl, เท็จ, ,
.ส่ง
GetRemoteData = .ResponseBody
จบด้วย
ตั้งค่าการดึงข้อมูล = ไม่มีเลย
ตั้งค่าโฆษณา = Server.CreateObject(Adodb.Stream)
ด้วยโฆษณา
.ประเภท = 1
.เปิด
.เขียน GetRemoteData
.เซิร์ฟเวอร์ SaveToFile.MapPath(LocalFileName),2
.ยกเลิก()
.ปิด()
จบด้วย
ตั้งค่าโฆษณา=ไม่มีอะไร
จบย่อย
'=================================================' ==
'ชื่อกระบวนการ: GetImg
'ฟังก์ชั่น: รับภาพแรกในบทความ'
'พารามิเตอร์: str ------ เนื้อหาบทความ
'พารามิเตอร์: strpath ------ เส้นทางในการบันทึกรูปภาพ
'=================================================' ==
ฟังก์ชัน GetImg(str,strpath)
ตั้ง objregEx = RegExp ใหม่
objregEx.IgnoreCase = จริง
objregEx.Global = จริง
zzstr=&strpath&(.+?)/.(jpg|gif|png|bmp)
objregEx.Pattern = zzstr
ตั้งค่าการจับคู่ = objregEx.execute (str)
สำหรับแต่ละนัดในการแข่งขัน
retstr = retstr &|& Match.Value
ต่อไป
ถ้า retstr<> แล้ว
Imglist=split(retstr,|)
Imgone=แทนที่(Imglist(1),strpath,)
GetImg=Imgone
อื่น
GetImg=
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
-
ต่อไปนี้เป็นตัวอย่าง
รหัสโปรแกรม
คัดลอกรหัสรหัสดังต่อไปนี้:
<form id=form1 name=form1 method=post action=?action=test>
<ชื่อ textarea=body cols=50 แถว=5 id=body>
<img height=180 src=http://cimg2.163.com/cnews/2006/8/21/200608210738371d0a8.jpg width=240 border=0 />
<img class=leftsrc=http://news.163.com/img/netease_logo.gif width=114 />
<img height=60 src=http://cimg2.163.com/cnews/2006/8/18/2006081811465369976.jpg width=120 border=0 />
<img ความสูง=60 /></textarea>
<ประเภทอินพุต=ชื่อส่ง=ค่าส่ง=ส่ง/>
</แบบฟอร์ม>
-
ถ้า request.QueryString(action)=test แล้ว
'สตริงที่เริ่มต้นรูปภาพ
FilesStartStr=src=
'มีเชือกอยู่ท้ายภาพ'
FilesOverStr=gif|jpg|bmp
'โฟลเดอร์สำหรับบันทึกรูปภาพ
เส้นทางไฟล์=qq
'รับ URL ของเว็บไซต์ที่ภาพถูกบันทึกไว้และกำหนดโดยอัตโนมัติว่าเป็นเส้นทางแบบสัมบูรณ์หรือแบบสัมพัทธ์ ในตัวอย่างนี้ รูปภาพจะเป็นที่อยู่ที่แน่นอน ดังนั้น NEWURL จึงไม่มีประโยชน์หากเป็น ../images/123 gif คุณต้องระบุ NEWURL
ข่าวUrl=http://news.163.com
'รับเนื้อหาบทความ
เนื้อหา =Request.Form(body)
'เริ่มบันทึกภาพ
เนื้อหา=ReplaceSaveRemoteFile(เนื้อหา,FilesStartStr,FilesOverStr,False,True,True,FilesPath,NewsUrl)
'สร้างภาพขนาดย่อสำหรับภาพแรกในข่าว
ถ้า GetImg(Content,FilesPath)<> แล้ว
Imgsrc=GetImg(เนื้อหา,เส้นทางไฟล์)
Imgsrc=replace(Imgsrc,FilesPath,)
ตั้งค่า Jpeg = Server.CreateObject(Persits.Jpeg)
เส้นทาง = Server.MapPath(&FilesPath&) & /&Imgsrc&
JPEG. เปิดเส้นทาง
'หากความกว้างของรูปภาพน้อยกว่าหรือเท่ากับ 120 และความสูงน้อยกว่าหรือเท่ากับ 90 จะไม่สร้างภาพขนาดย่อ
ถ้า Jpeg.OriginalWidth<=120 และ Jpeg.Height<=90 แล้ว
Jpeg.Width = Jpeg.OriginalWidth
Jpeg.Height = Jpeg.OriginalHeight
Smallimg=FilesPath&&GetImg(เนื้อหา,FilesPath)
อื่น
'รูปภาพกว้างและสูง/2
Jpeg.Width = Jpeg.OriginalWidth / 2
Jpeg.Height = Jpeg.OriginalHeight / 2
Jpeg.Save Server.MapPath(&FilesPath&) & /small_&Imgsrc&
Smallimg=&FilesPath&/small_&Imgsrc&
สิ้นสุดถ้า
สิ้นสุดถ้า
'แสดงผล.
ตอบกลับ เขียน(ภาพแรกในข่าวคือ :)
response.Write(<img src=&FilesPath&/&GetImg(Content,FilesPath)&>)
response.Write(<br>ภาพย่อของภาพแรกในข่าวคือ :)
response.Write(<img src=&Smallimg&>)
response.Write(<br>เนื้อหาข่าวใหม่ (รูปภาพเป็นภาษาท้องถิ่น):<br>)
ตอบกลับเขียน(เนื้อหา)
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า
-