以下是函数

<%
'==================================================
'函数名:CheckDir2
'作 用:检查文件夹是否存在
'参 数:FolderPath ------文件夹地址
'==================================================
Function CheckDir2(byval FolderPath)
 dim fso
 folderpath=Server.MapPath(".")&"\"&folderpath
 Set fso = Server.CreateObject("Scripting.FileSystemObject")
 If fso.FolderExists(FolderPath) then
 '存在
 CheckDir2 = True
 Else
 '不存在
 CheckDir2 = False
 End if
 Set fso = nothing
End Function
'==================================================
'函数名:MakeNewsDir2
'作 用:创建新的文件夹
'参 数:foldername ------文件夹名称
'==================================================
Function MakeNewsDir2(byval foldername)
 dim fso
 Set fso = Server.CreateObject("Scripting.FileSystemObject")
 fso.CreateFolder(Server.MapPath(".") &"\" &foldername)
 If fso.FolderExists(Server.MapPath(".") &"\" &foldername) Then
 MakeNewsDir2 = True
 Else
 MakeNewsDir2 = False
 End If
 Set fso = nothing
End Function
'==================================================
'函数名:DefiniteUrl
'作 用:将相对地址转换为绝对地址
'参 数:PrimitiveUrl ------要转换的相对地址
'参 数:ConsultUrl ------当前网页地址
'==================================================
Function DefiniteUrl(Byval PrimitiveUrl,Byval ConsultUrl)
 Dim ConTemp,PriTemp,Pi,Ci,PriArray,ConArray
 If PrimitiveUrl="" or ConsultUrl="" or PrimitiveUrl="$False$" Then
 DefiniteUrl="$False$"
 Exit Function
 End If
 If Left(ConsultUrl,7)<>"HTTP://" And Left(ConsultUrl,7)<>"http://" Then
 ConsultUrl= "http://" & ConsultUrl
 End If
 ConsultUrl=Replace(ConsultUrl,"://",":\\")
 If Right(ConsultUrl,1)<>"/" Then
 If Instr(ConsultUrl,"/")>0 Then
 If Instr(Right(ConsultUrl,Len(ConsultUrl)-InstrRev(ConsultUrl,"/")),".")>0 then
 Else
 ConsultUrl=ConsultUrl & "/"
 End If
 Else
 ConsultUrl=ConsultUrl & "/"
 End If
 End If
 ConArray=Split(ConsultUrl,"/")
 If Left(PrimitiveUrl,7) = "http://" then
 DefiniteUrl=Replace(PrimitiveUrl,"://",":\\")
 ElseIf Left(PrimitiveUrl,1) = "/" Then
 DefiniteUrl=ConArray(0) & PrimitiveUrl
 ElseIf Left(PrimitiveUrl,2)="./" Then
 DefiniteUrl=ConArray(0) & Right(PrimitiveUrl,Len(PrimitiveUrl)-1)
 ElseIf Left(PrimitiveUrl,3)="../" then
 Do While Left(PrimitiveUrl,3)="../"
 PrimitiveUrl=Right(PrimitiveUrl,Len(PrimitiveUrl)-3)
 Pi=Pi+1
 Loop
 For Ci=0 to (Ubound(ConArray)-1-Pi)
 If DefiniteUrl<>"" Then
 DefiniteUrl=DefiniteUrl & "/" & ConArray(Ci)
 Else
 DefiniteUrl=ConArray(Ci)
 End If
 Next
 DefiniteUrl=DefiniteUrl & "/" & PrimitiveUrl
 Else
 If Instr(PrimitiveUrl,"/")>0 Then
 PriArray=Split(PrimitiveUrl,"/")
 If Instr(PriArray(0),".")>0 Then
 If Right(PrimitiveUrl,1)="/" Then
 DefiniteUrl="http:\\" & PrimitiveUrl
 Else
 If Instr(PriArray(Ubound(PriArray)-1),".")>0 Then
 DefiniteUrl="http:\\" & PrimitiveUrl
 Else
 DefiniteUrl="http:\\" & PrimitiveUrl & "/"
 End If
 End If
 Else
 If Right(ConsultUrl,1)="/" Then
 DefiniteUrl=ConsultUrl & PrimitiveUrl
 Else
 DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & PrimitiveUrl
 End If
 End If
 Else
 If Instr(PrimitiveUrl,".")>0 Then
 If Right(ConsultUrl,1)="/" Then
 If right(PrimitiveUrl,3)=".cn" or right(PrimitiveUrl,3)="com" or right(PrimitiveUrl,3)="net" or right(PrimitiveUrl,3)="org" Then
 DefiniteUrl="http:\\" & PrimitiveUrl & "/"
 Else
 DefiniteUrl=ConsultUrl & PrimitiveUrl
 End If
 Else
 If right(PrimitiveUrl,3)=".cn" or right(PrimitiveUrl,3)="com" or right(PrimitiveUrl,3)="net" or right(PrimitiveUrl,3)="org" Then
 DefiniteUrl="http:\\" & PrimitiveUrl & "/"
 Else
 DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & "/" & PrimitiveUrl
 End If
 End If
 Else
 If Right(ConsultUrl,1)="/" Then
 DefiniteUrl=ConsultUrl & PrimitiveUrl & "/"
 Else
 DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & "/" & PrimitiveUrl & "/"
 End If
 End If
 End If
 End If
 If Left(DefiniteUrl,1)="/" then
 DefiniteUrl=Right(DefiniteUrl,Len(DefiniteUrl)-1)
 End if
 If DefiniteUrl<>"" Then
 DefiniteUrl=Replace(DefiniteUrl,"//","/")
 DefiniteUrl=Replace(DefiniteUrl,":\\","://")
 Else
 DefiniteUrl="$False$"
 End If
End Function
'==================================================
'函数名:ReplaceSaveRemoteFile
'作 用:替换、保存远程文件
'参 数:ConStr ------ 要替换的字符串
'参 数:StarStr ----- 前导
'参 数:OverStr -----
'参 数:IncluL ------
'参 数:IncluR ------
'参 数:SaveTf ------ 是否保存文件,False不保存,True保存
'参 数:SaveFilePath- 保存文件夹
'参 数: TistUrl------ 当前网页地址
'==================================================
Function ReplaceSaveRemoteFile(ConStr,StartStr,OverStr,IncluL,IncluR,SaveTf,SaveFilePath,TistUrl)
 If ConStr="$False$" or ConStr="" Then
 ReplaceSaveRemoteFile="$False$"
 Exit Function
 End If
 Dim TempStr,TempStr2,ReF,Matches,Match,Tempi,TempArray,TempArray2,OverTypeArray

Set ReF = New Regexp
 ReF.IgnoreCase = True
 ReF.Global = True
 ReF.Pattern = "("&StartStr&").+?("&OverStr&")"
 Set Matches =ReF.Execute(ConStr)
 For Each Match in Matches
 If Instr(TempStr,Match.Value)=0 Then
 If TempStr<>"" then
 TempStr=TempStr & "$Array$" & Match.Value
 Else
 TempStr=Match.Value
 End if
 End If
 Next
 Set Matches=nothing
 Set ReF=nothing
 If TempStr="" or IsNull(TempStr)=True Then
 ReplaceSaveRemoteFile=ConStr
 Exit function
 End if
 If IncluL=False then
 TempStr=Replace(TempStr,StartStr,"")
 End if
 If IncluR=False then
 If Instr(OverStr,"|")>0 Then
 OverTypeArray=Split(OverStr,"|")
 For Tempi=0 To Ubound(OverTypeArray)
 TempStr=Replace(TempStr,OverTypeArray(Tempi),"")
 Next
 Else
 TempStr=Replace(TempStr,OverStr,"")
 End If
 End if
 TempStr=Replace(TempStr,"""","")
 TempStr=Replace(TempStr,"'","")

Dim RemoteFile,RemoteFileurl,SaveFileName,SaveFileType,ArrSaveFileName,RanNum
 If Right(SaveFilePath,1)="/" then
 SaveFilePath=Left(SaveFilePath,Len(SaveFilePath)-1)
 End If
 If SaveTf=True then
 If CheckDir2(SaveFilePath)=False Then
 If MakeNewsDir2(SaveFilePath)=False Then
 SaveTf=False
 End If
 End If
 End If
 SaveFilePath=SaveFilePath & "/"

'图片转换/保存
 TempArray=Split(TempStr,"$Array$")
 For Tempi=0 To Ubound(TempArray)
 RemoteFileurl=DefiniteUrl(TempArray(Tempi),TistUrl)
 If RemoteFileurl<>"$False$" And SaveTf=True Then'保存图片
 ArrSaveFileName = Split(RemoteFileurl,".")
 SaveFileType=ArrSaveFileName(Ubound(ArrSaveFileName))'文件类型
 RanNum=Int(900*Rnd)+100
 SaveFileName = SaveFilePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&SaveFileType
 Call SaveRemoteFile(SaveFileName,RemoteFileurl)
 ConStr=Replace(ConStr,TempArray(Tempi),SaveFileName)
 ElseIf RemoteFileurl<>"$False$" and SaveTf=False Then'不保存图片
 SaveFileName=RemoteFileUrl
 ConStr=Replace(ConStr,TempArray(Tempi),SaveFileName)
 End If
 If RemoteFileUrl<>"$False$" Then
 If UploadFiles="" then
 UploadFiles=SaveFileName
 Else
 UploadFiles=UploadFiles & "|" & SaveFileName
 End if
 End If
 Next
 ReplaceSaveRemoteFile=ConStr
End function
'==================================================
'过程名:SaveRemoteFile
'作 用:保存远程的文件到本地
'参 数:LocalFileName ------ 本地文件名
'参 数:RemoteFileUrl ------ 远程文件URL
'==================================================
sub SaveRemoteFile(LocalFileName,RemoteFileUrl)
 dim Ads,Retrieval,GetRemoteData
 Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
 With Retrieval
 .Open "Get", RemoteFileUrl, False, "", ""
 .Send
 GetRemoteData = .ResponseBody
 End With
 Set Retrieval = Nothing
 Set Ads = Server.CreateObject("Adodb.Stream")
 With Ads
 .Type = 1
 .Open
 .Write GetRemoteData
 .SaveToFile server.MapPath(LocalFileName),2
 .Cancel()
 .Close()
 End With
 Set Ads=nothing
end sub

'==================================================
'过程名:GetImg
'作 用:取得文章中第一张图片
'参 数:str ------ 文章内容
'参 数:strpath ------ 保存图片的路径
'==================================================
Function GetImg(str,strpath)
set objregEx = new RegExp
objregEx.IgnoreCase = true
objregEx.Global = true
zzstr=""&strpath&"(.+?)\.(jpg|gif|png|bmp)"
objregEx.Pattern = zzstr
set matches = objregEx.execute(str)
for each match in matches
retstr = retstr &"|"& Match.Value
next
if retstr<>"" then
Imglist=split(retstr,"|")
Imgone=replace(Imglist(1),strpath,"")
GetImg=Imgone
else
GetImg=""
end if
end function
%>

以下是使用例子

<form id="form1" name="form1" method="post" action="?action=test">
 <textarea name="body" cols="50" rows="5" id="body">
<img height="180" src="http://cimg2.163.com/cnews/2006/8/21/200608210738371d0a8.jpg" width="240" border="0" />
<img class="left"src="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 height="60" alt="中国维和人数大国之首" src="http://cimg2.163.com/cnews/2006/8/18/200608181506554fd8f.jpg" width="120" border="0" />
 </textarea>
 <input type="submit" name="Submit" value="提交" />
</form>
<%
if request.QueryString("action")="test" then
 '图片开始的字符串
 FilesStartStr="src="
 '图片结束的字符串
 FilesOverStr="gif|jpg|bmp"
 '保存图片的文件夹
 FilesPath="qq"
 '取得保存图片的网站URL 自动判断是绝对 还是相对路径
 NewsUrl="http://news.163.com"
 '取得文章内容
 Content =Request.Form("body")
 '开始保存图片
 Content=ReplaceSaveRemoteFile(Content,FilesStartStr,FilesOverStr,False,True,True,FilesPath,NewsUrl)
 '对新闻中的第一张图片创建缩略图
 if GetImg(Content,FilesPath)<>"" then
 Imgsrc=GetImg(Content,FilesPath)
 Imgsrc=replace(Imgsrc,FilesPath,"")
 Set Jpeg = Server.CreateObject("Persits.Jpeg")
 Path = Server.MapPath(""&FilesPath&"") & "\"&Imgsrc&""
 Jpeg.Open Path
 '如果图片宽小于等于120 高小于等于90 则不创建缩略图
 if Jpeg.OriginalWidth<=120 and Jpeg.Height<=90 then
 Jpeg.Width = Jpeg.OriginalWidth
 Jpeg.Height = Jpeg.OriginalHeight
 Smallimg=FilesPath&""&GetImg(Content,FilesPath)
 else
 '图片宽度高度/2
 Jpeg.Width = Jpeg.OriginalWidth / 2
 Jpeg.Height = Jpeg.OriginalHeight / 2
 Jpeg.Save Server.MapPath(""&FilesPath&"") & "\small_"&Imgsrc&""
 Smallimg=""&FilesPath&"/small_"&Imgsrc&""
 end if
 end if
 '显示结果
 response.Write("新闻中的第一张图片是:")
 response.Write("<img src="&FilesPath&"/"&GetImg(Content,FilesPath)&">")
 response.Write("<br>新闻中的第一张图片的缩略图是:")
 response.Write("<img src="&Smallimg&">")
 response.Write("<br>新的新闻内容(图片为本地):<br>")
 Response.Write(Content)
 Response.End()
end if
%>

保存远程图片到本地 同时取得第一张图片并创建缩略图相关推荐

  1. ASP保存远程图片到本地 同时取得第一张图片

    这是本人在SNA新闻采集系统 For 动力3.62 里使用的几个函数 可以普遍的使用在采集 或者 在线添加文章中 以下是函数程序代码 <% '========================== ...

  2. php文章远程图片,php保存远程图片到本地 php正则匹配文章中的远程图片地址

    在添加文章的时候,很多情况下我们需要处理文章中的远程图片,将其保存到本地,以免别人网站删除后文章里面就无法访问了. 因此我们需要正则匹配文章中的图片地址, 这里我们使用php的正则表达式来实现:$co ...

  3. 远程图片保存到服务器 php,保存远程图片到本地服务器几种方法[php,asp]网

    保存远程图片到本地服务器几种方法[,] function get_file($url,$folder){ set_time_limit (24 * 60 * 60); $destination_fol ...

  4. php 保存远程图片到本地

    显示远程图片: <?php header('Content-Type:image/jpg'); echo file_get_contents("http://www.baidu.com ...

  5. php 图片保存到本地_PHP保存远程图片到本地

    方法一参考: // Function: 获取远程图片并把它保存到本地 //  确定您有把文件写入本地服务器的权限 // 变量说明: // $url 是远程图片的完整URL地址,不能为空. // $fi ...

  6. PHP下载/采集远程图片到本地

    2019独角兽企业重金招聘Python工程师标准>>> PHP下载/采集远程图片到本地01 /** 02* 下载远程图片到本地 03* 04* @param string $url ...

  7. C# .NET 根据Url链接保存Image图片到本地磁盘

    C# .NET 根据Url链接保存Image图片到本地磁盘 原文:C# .NET 根据Url链接保存Image图片到本地磁盘 根据一个Image的Url链接可以在浏览器中显示一个图片,如果要通过代码将 ...

  8. H5页面保存base64图片到本地

    保存base64图片到本地 H5页面与APP端.小程序端有所不同,其没有操作本地文件的权限,因此保存图片功能需要"下载"来支持. 一般我们通过canvas等功能生成的图片都是bas ...

  9. php抓取远程图片到本地,php获取远程图片保存到本地

    本函数主要功能: 获取远程图片并把它保存到本地,确定有把文件写入本地服务器的权限. 变量说明: $url 是远程图片的完整URL地址,不能为空. $filename 是可选变量: 如果为空,本地文件名 ...

  10. php选取远程文件到本地,PHP实现的一个保存远程文件到本地的函数分享

    最近遇到了PHP远程图片本地话的问题,查了查手册发现file_get_contents()和file_put_contents()可以解决这个问题.思路很简单,将远程文件读入字符串中,然后按照规则写入 ...

最新文章

  1. 面试问你Spring如何解决循环依赖的时候,不要一脸懵逼了!
  2. python查询mysql 乱码_python查询mysql中文乱码问题
  3. Android动画原理
  4. sox+linux查录音格式,linux-使用SOX和sox FAIL格式混合音频:无法打开输入文件`audio_recorded.wav’:WAVE:找不到RIFF标头...
  5. 哪个读书app可以导入txt_QQ阅读iphone版怎么导入电子书 三种手机QQ阅读器导入本地图书图文教程...
  6. 数组指定位置添加元素_数据结构--顺序表的9种基本运算,初始化,销毁,判断是否为空表,长度,求指定位置的元素值......
  7. 云图说 | 通过Helm模板快速部署中间件应用
  8. 学习笔记 VB.NET 特殊字符
  9. linux 检查文件更新,Linux系统文件系统优化及磁盘检查
  10. nodejs + echarts 图表展示
  11. 图片复印如何去除黑底_我告诉你照片打印如何去除黑底
  12. Vite + Vue3 项目中,使用 vw/vh 适配移动端,并通过 Android Studio 打包
  13. 任务管理器 中mysqld.exe 所占内存过高
  14. 活动二维码怎么制作?如何将活动内容做成二维码图片?
  15. 如何用计算机玩扫雷,扫雷怎么玩_玩好扫雷游戏的技巧是什么【图文】-太平洋电脑网PConline-太平洋电脑网...
  16. gateway整合https(自定义证书)
  17. Mac终端添加快捷命令
  18. 只能就读专科学校和专业怎么选择呢?
  19. python俄罗斯方块教程_python tkinter实现俄罗斯方块 基础版
  20. Android工具类 全国省市的Json文件

热门文章

  1. HTML5截取视频第一帧作为预览图片
  2. H3C防火墙——回环流量问题(内网终端通过外网IP访问内部服务器)
  3. vim 全局替换命令
  4. 使用DbFunctions来解决EF按照日期分组数据
  5. windows 下安装 mysql
  6. Myeclipse中JSP页面快捷键注释失效解决方法
  7. iPhone开发 No IB UITextField 设置圆角
  8. android手机添加删除桌面图标和插件,设置壁纸
  9. 计算机应用课程的考核情况,《计算机应用技术》课程kpi考核说明..doc
  10. fatal error LNK1169: 找到一个或多个多重定义的符号 解决方案