Esta función se puede utilizar durante la recopilación o al agregar artículos en línea. Esta función se puede utilizar durante la recopilación o al agregar artículos en línea.
El código que busqué en Baidu para guardar imágenes remotas en el área local parece un poco difícil de usar y no hay ningún código completo y listo para usar que no pueda entender.
Extraje algunas funciones del sistema de recopilación de noticias SNA para 3.62 (programado por: ansir) y las usé, que es relativamente simple y fácil de usar.
La siguiente es la función
código de programa
Copie el código de código de la siguiente manera:
<%
'=================================================== = =
'Nombre de la función: CheckDir2
'Función: Comprobar si la carpeta existe
'Parámetro: FolderPath ------dirección de carpeta
'=================================================== = =
Función CheckDir2 (ruta de carpeta byval)
fso tenue
ruta de carpeta=Server.MapPath(.)&/&ruta de carpeta
Establecer fso = Server.CreateObject(Scripting.FileSystemObject)
Si fso.FolderExists (FolderPath) entonces
'existir
CheckDir2 = Verdadero
Demás
'no existe
CheckDir2 = Falso
terminar si
Establecer fso = nada
Función final
'=================================================== = =
'Nombre de la función: MakeNewsDir2
'Función: Crear una nueva carpeta
'Parámetro: nombre de carpeta ------nombre de carpeta
'=================================================== = =
Función MakeNewsDir2 (nombre de carpeta byval)
fso tenue
Establecer fso = Server.CreateObject(Scripting.FileSystemObject)
fso.CreateFolder(Server.MapPath(.) &/ &nombre de carpeta)
Si fso.FolderExists(Server.MapPath(.) &/ &nombre de carpeta) Entonces
MakeNewsDir2 = Verdadero
Demás
MakeNewsDir2 = Falso
Terminar si
Establecer fso = nada
Función final
'=================================================== = =
'Nombre de la función: DefiniteUrl
'Función: Convertir dirección relativa a dirección absoluta
'Parámetro: PrimitiveUrl ------ dirección relativa a convertir
'Parámetro: ConsultUrl ------Dirección de la página web actual
'=================================================== = =
Función DefiniteUrl (Byval PrimitiveUrl, Byval ConsultUrl)
Atenuar ConTemp,PriTemp,Pi,Ci,PriArray,ConArray
Si PrimitiveUrl= o ConsultUrl= o PrimitiveUrl=$False$ Entonces
URL definida=$Falso$
Función de salida
Terminar si
Si se fue (ConsultUrl,7)<>HTTP:// y se fue (ConsultUrl,7)<>http:// entonces
ConsultarUrl= http:// & ConsultarUrl
Terminar si
ConsultarUrl=Reemplazar(ConsultarUrl,://,://)
Si es correcto(ConsultUrl,1)<>/ Entonces
Si Instr(ConsultUrl,/)>0 Entonces
Si Instr(Right(ConsultUrl,Len(ConsultUrl)-InstrRev(ConsultUrl,/)),.)>0 entonces
Demás
ConsultarUrl=ConsultarUrl & /
Terminar si
Demás
ConsultarUrl=ConsultarUrl & /
Terminar si
Terminar si
ConArray=Dividir(ConsultUrl,/)
Si Izquierda(PrimitiveUrl,7) = http:// entonces
DefiniteUrl=Reemplazar(PrimitiveUrl,://,://)
ElseIf Left(PrimitiveUrl,1) = / Entonces
DefiniteUrl=ConArray(0) & PrimitivaUrl
ElseIf Left(PrimitiveUrl,2)=./ Entonces
DefiniteUrl=ConArray(0) & Derecha(PrimitiveUrl,Len(PrimitiveUrl)-1)
ElseIf Left(PrimitiveUrl,3)=../ entonces
Hacer mientras queda(PrimitiveUrl,3)=../
URL Primitiva=Derecha(Url Primitiva,Len(Url Primitiva)-3)
Pi=Pi+1
Bucle
Para Ci=0 a (Ubound(ConArray)-1-Pi)
Si DefiniteUrl<> Entonces
DefiniteUrl=DefiniteUrl & / & ConArray(Ci)
Demás
DefiniteUrl=ConArray(Ci)
Terminar si
Próximo
DefiniteUrl=DefiniteUrl & / & PrimitiveUrl
Demás
Si Instr(PrimitiveUrl,/)>0 Entonces
PriArray=Dividir(Url primitiva,/)
Si Instr(PriArray(0),.)>0 Entonces
Si es correcto (PrimitiveUrl, 1) =/ entonces
DefiniteUrl=http:// & PrimitivaUrl
Demás
Si Instr(PriArray(Ubound(PriArray)-1),.)>0 Entonces
DefiniteUrl=http:// & PrimitivaUrl
Demás
DefiniteUrl=http:// & PrimitiveUrl & /
Terminar si
Terminar si
Demás
Si es correcto(ConsultUrl,1)=/ Entonces
DefiniteUrl=ConsultarUrl y PrimitivaUrl
Demás
DefiniteUrl=Izquierda(ConsultUrl,InstrRev(ConsultUrl,/)) & PrimitiveUrl
Terminar si
Terminar si
Demás
Si Instr(PrimitiveUrl,.)>0 Entonces
Si es correcto(ConsultUrl,1)=/ Entonces
Si right(PrimitiveUrl,3)=.cn o right(PrimitiveUrl,3)=com o right(PrimitiveUrl,3)=net o right(PrimitiveUrl,3)=org Entonces
DefiniteUrl=http:// & PrimitiveUrl & /
Demás
DefiniteUrl=ConsultarUrl y PrimitivaUrl
Terminar si
Demás
Si right(PrimitiveUrl,3)=.cn o right(PrimitiveUrl,3)=com o right(PrimitiveUrl,3)=net o right(PrimitiveUrl,3)=org Entonces
DefiniteUrl=http:// & PrimitiveUrl & /
Demás
DefiniteUrl=Izquierda(ConsultUrl,InstrRev(ConsultUrl,/)) & / & PrimitiveUrl
Terminar si
Terminar si
Demás
Si es correcto(ConsultUrl,1)=/ Entonces
DefiniteUrl=ConsultUrl & PrimitiveUrl & /
Demás
DefiniteUrl=Izquierda(ConsultUrl,InstrRev(ConsultUrl,/)) & / & PrimitiveUrl & /
Terminar si
Terminar si
Terminar si
Terminar si
Si Left(DefiniteUrl,1)=/ entonces
DefiniteUrl=Derecha(DefiniteUrl,Len(DefiniteUrl)-1)
terminar si
Si DefiniteUrl<> Entonces
DefiniteUrl=Reemplazar(DefiniteUrl,//,/)
DefiniteUrl=Reemplazar(DefiniteUrl,://,://)
Demás
URL definida=$Falso$
Terminar si
Función final
'=================================================== = =
'Nombre de la función: ReemplazarGuardarArchivoRemoto
'Función: reemplazar y guardar archivos remotos
'Parámetro: ConStr ------ cadena a reemplazar
'Parámetro: StarStr ----- líder
'Parámetro: OverStr -----
'Parámetro:IncluL ------
'Parámetro:IncluR ------
'Parámetro: SaveTf ------ Si se guarda el archivo, False no guarda, True guarda
'Parámetro: SaveFilePath-guardar carpeta
'Parámetro: TistUrl------ dirección de la página web actual
'=================================================== = =
Función ReemplazarGuardarArchivoRemoto(ConStr,StartStr,OverStr,IncluL,IncluR,SaveTf,SaveFilePath,TistUrl)
Si ConStr=$False$ o ConStr= Entonces
ReemplazarSaveRemoteFile=$Falso$
Función de salida
Terminar si
Dim TempStr,TempStr2,ReF,Coincidencias,Coincidencia,Tempi,TempArray,TempArray2,OverTypeArray
Establecer ReF = Nueva expresión regular
ReF.IgnoreCase = Verdadero
ReF.Global = Verdadero
Patrón.ReF = (&StartStr&).+?(&OverStr&)
Establecer coincidencias =ReF.Execute(ConStr)
Para cada partido en partidos
Si Instr(TempStr,Match.Value)=0 Entonces
Si TempStr<> entonces
TempStr=TempStr & $Array$ & Coincidencia.Valor
Demás
TempStr=Coincidencia.Valor
terminar si
Terminar si
Próximo
Establecer coincidencias = nada
Establecer ReF = nada
Si TempStr= o IsNull(TempStr)=True Entonces
ReemplazarSaveRemoteFile=ConStr
Función de salida
terminar si
Si IncluL=False entonces
TempStr=Reemplazar(TempStr,StartStr,)
terminar si
Si InclR = Falso entonces
Si Instr(OverStr,|)>0 Entonces
OverTypeArray=Dividir(OverStr,|)
Para Tempi = 0 a Ubound (OverTypeArray)
TempStr=Reemplazar(TempStr,OverTypeArray(Tempi),)
Próximo
Demás
TempStr=Reemplazar(TempStr,OverStr,)
Terminar si
terminar si
TempStr=Reemplazar(TempStr,,)
TempStr=Reemplazar(TempStr,',)
Dim RemoteFile,RemoteFileurl,SaveFileName,SaveFileType,ArrSaveFileName,RanNum
Si Right(SaveFilePath,1)=/ entonces
SaveFilePath=Izquierda(SaveFilePath,Len(SaveFilePath)-1)
Terminar si
Si SaveTf=True entonces
Si CheckDir2(SaveFilePath)=False entonces
Si MakeNewsDir2(SaveFilePath)=False entonces
GuardarTf=Falso
Terminar si
Terminar si
Terminar si
SaveFilePath=GuardarFilePath & /
'Conversión/guardado de imagen
TempArray=Dividir(TempStr,$Array$)
Para Tempi=0 a Ubound(TempArray)
RemoteFileurl=Url Definida(TempArray(Tempi),TistUrl)
Si RemoteFileurl<>$False$ y SaveTf=True entonces guarde la imagen
ArrSaveFileName = Split(RemoteFileurl,.)
SaveFileType=ArrSaveFileName(Ubound(ArrSaveFileName))'Tipo de archivo
NúmRan=Int(900*Rnd)+100
SaveFileName = SaveFilePath&año(ahora)&mes(ahora)&día(ahora)&hora(ahora)&minuto(ahora)&segundo(ahora)&ranNum&.&SaveFileType
Llamar a SaveRemoteFile(SaveFileName,RemoteFileurl)
ConStr=Reemplazar(ConStr,TempArray(Tempi),GuardarNombreDeArchivo)
ElseIf RemoteFileurl<>$False$ y SaveTf=False Then'No guarde la imagen
SaveFileName=Url de archivo remoto
ConStr=Reemplazar(ConStr,TempArray(Tempi),GuardarNombreDeArchivo)
Terminar si
Si RemoteFileUrl<>$False$ Entonces
Si cargar archivos = entonces
UploadFiles=Guardar nombre de archivo
Demás
UploadFiles=Subir archivos & | & Guardar nombre de archivo
terminar si
Terminar si
Próximo
ReemplazarSaveRemoteFile=ConStr
Función final
'=================================================== = =
'Nombre del proceso: SaveRemoteFile
'Función: guardar archivos remotos en local
'Parámetro: LocalFileName ------ nombre del archivo local
'Parámetro: RemoteFileUrl ------ URL del archivo remoto
'=================================================== = =
sub GuardarArchivoRemoto(NombreArchivoLocal,UrlArchivoRemoto)
anuncios tenues, recuperación, obtener datos remotos
Establecer recuperación = Server.CreateObject(Microsoft.XMLHTTP)
Con recuperación
.Abrir Obtener, RemoteFileUrl, Falso, ,
.Enviar
GetRemoteData = .ResponseBody
Terminar con
Establecer recuperación = nada
Establecer anuncios = Server.CreateObject(Adodb.Stream)
Con anuncios
.Tipo = 1
.Abierto
.Escribir GetRemoteData
.SaveToFile server.MapPath(LocalFileName),2
.Cancelar()
.Cerca()
Terminar con
Establecer anuncios = nada
sub final
'=================================================== = =
'Nombre del proceso: GetImg
'Función: Obtener la primera imagen del artículo.
'Parámetro: str ------ contenido del artículo
'Parámetro: strpath ------ ruta para guardar la imagen
'=================================================== = =
Función GetImg(str,strpath)
establecer objregEx = nueva RegExp
objregEx.IgnoreCase = verdadero
objregEx.Global = verdadero
zzstr=&strpath&(.+?)/.(jpg|gif|png|bmp)
objregEx.Patrón = zzstr
establecer coincidencias = objregEx.execute(str)
para cada partido en partidos
retstr = retstr &|& Coincidencia.Valor
próximo
si retstr <> entonces
Listaimg=split(retstr,|)
Estoy ido=reemplazar(Imglist(1),strpath,)
GetImg=Desaparecido
demás
ObtenerImg=
terminar si
función final
%>
Los siguientes son ejemplos
código de programa
Copie el código de código de la siguiente manera:
<id del formulario=nombre del formulario1=método del formulario1=acción de publicación=?acción=prueba>
<nombre del área de texto=cuerpo columnas=50 filas=5 id=cuerpo>
<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 altura=60 /></textarea>
<tipo de entrada=enviar nombre=Enviar valor=Enviar/>
</formulario>
<%
si request.QueryString(action)=test entonces
'La cuerda que inicia la imagen
ArchivosStartStr=src=
'Cadena al final de la imagen
ArchivosOverStr=gif|jpg|bmp
'Carpeta para guardar imágenes
RutaDeArchivos=qq
'Obtiene la URL del sitio web donde está guardada la imagen y determina automáticamente si es una ruta absoluta o relativa. En este ejemplo, la imagen es una dirección absoluta, por lo que NEWURL es inútil si es ../images/123. gif, debe especificar NEWURL.
URL de noticias=http://news.163.com
'Obtener el contenido del artículo
Contenido =Solicitud.Formulario(cuerpo)
'Empieza a guardar fotos
Contenido=ReemplazarGuardarArchivoRemoto(Contenido,FilesStartStr,FilesOverStr,False,True,True,FilesPath,NewsUrl)
'Crea una miniatura para la primera imagen de las noticias.
si GetImg(Contenido,FilesPath)<> entonces
Imgsrc=GetImg(Contenido,RutaArchivos)
Imgsrc=reemplazar(Imgsrc,RutaArchivos,)
Establecer Jpeg = Server.CreateObject(Persits.Jpeg)
Ruta = Server.MapPath(&FilesPath&) & /&Imgsrc&
Jpeg.Ruta abierta
'Si el ancho de la imagen es menor o igual a 120 y la altura es menor o igual a 90, no se creará ninguna miniatura.
si Jpeg.OriginalWidth<=120 y Jpeg.Height<=90 entonces
Jpeg.Ancho = Jpeg.AnchoOriginal
Jpeg.Altura = Jpeg.AlturaOriginal
Smallimg=RutaArchivos&&GetImg(Contenido,RutaArchivos)
demás
'Ancho y alto de la imagen/2
Jpeg.Ancho = Jpeg.AnchoOriginal / 2
Jpeg.Altura = Jpeg.AlturaOriginal / 2
Jpeg.Save Server.MapPath(&FilesPath&) & /small_&Imgsrc&
Smallimg=&RutaArchivos&/small_&Imgsrc&
terminar si
terminar si
'Mostrar resultados
respuesta.Escribir(La primera imagen de la noticia es :)
respuesta.Write(<img src=&FilesPath&/&GetImg(Contenido,FilesPath)&>)
Response.Write(<br>La miniatura de la primera imagen de la noticia es:)
respuesta.Escribir(<img src=&Smallimg&>)
Response.Write(<br>Nuevo contenido de noticias (la imagen es local):<br>)
Respuesta.Escribir(Contenido)
Respuesta.Fin()
terminar si
%>