asp保存文章内容中的远程图片到本地asp

/ / 2023-06-01   阅读:2507
以下是一个ASP保存文章内容中的远程图片到本地的示例代码。代码中首先从数据库中读取文章内容,然后使用正则表达式和文件流处理每个远程图片,将其保存到本地,并替换文章内容中的图片链接为本地路径。...

以下是一个ASP保存文章内容中的远程图片到本地的示例代码。代码中首先从数据库中读取文章内容,然后使用正则表达式和文件流处理每个远程图片,将其保存到本地,并替换文章内容中的图片链接为本地路径。


<%

'连接数据库并读取文章内容

Dim conn, rs, sql

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\database.mdb;"

sql = "SELECT * FROM articles WHERE id=1;"

Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open sql, conn


If Not rs.EOF Then

    '获取文章内容

    Dim content

    content = rs("content")

    

    '正则表达式匹配图片链接并保存图片到本地

    Dim reg, matches, imgsrc, imgfile

    Set reg = New RegExp

    '使用下面的正则表达式,当图片文件名后面跟了带问号参数时下载失败

    'reg.Pattern = "<img[^>]*src=['""]([^'""]+.(jpg|jpeg|png|gif|bmp))['""][^>]*>"

    '使用下面的正则表达式,去掉文件名后面带问号的参数,下载成功

    reg.Pattern = "<img[^>]*src=['""]([^'""]+\.(jpg|jpeg|png|gif|bmp))\?[^'""]*['""][^>]*>"

    reg.Global = True

    Set matches = reg.Execute(content)

    

    For Each Match In matches

        imgsrc = Match.Submatches(0)

        imgfile = "C:\path\to\local\" & GetFileName(imgsrc) '保存到本地的文件名

        DownloadFile imgsrc, imgfile '将远程图片保存到本地

        content = Replace(content, imgsrc, imgfile) '将文章内容中的图片链接替换为本地路径

    Next

    

    '保存更新后的文章内容

    rs("content") = content

    rs.Update

End If


rs.Close

conn.Close


'获取URL中的文件名

Function GetFileName(url)

    Dim fileparts

    fileparts = Split(url, "/")

    GetFileName = fileparts(UBound(fileparts))

End Function


'下载远程文件到本地

Sub DownloadFile(source, destination)

    Dim oXMLHttp, oStream

    Set oXMLHttp = Server.CreateObject("Microsoft.XMLHTTP")

    Set oStream = Server.CreateObject("ADODB.Stream")


    oXMLHttp.Open "GET", source, False

    oXMLHttp.Send


    If oXMLHttp.Status = 200 Then

        oStream.Type = 1

        oStream.Open

        oStream.Write oXMLHttp.ResponseBody

        oStream.SaveToFile destination, 2

        oStream.Close

    End If


    Set oXMLHttp = Nothing

    Set oStream = Nothing

End Sub

%>


上述代码中的数据库连接字符串和保存到本地的文件路径需要根据实际情况进行替换。另外,该示例代码只支持保存jpg、jpeg、png、gif和bmp格式的图片。如果要支持其他格式的图片,需要相应地修改正则表达式和DownloadFile函数中的判断逻辑。

我要评论

昵称:
验证码:

最新评论

共0条 共0页 10条/页 首页 上一页 下一页 尾页
意见反馈