2012-05-08 94 views
5

tengo algunas URLs que están vinculados a un ejemplo pdfdescargar archivos de URL usando ASP clásico

abc.com/1.pdf abc.com/2g.pdf abc.com/i8.pdf

lo que quería hacer es descargar los archivos PDF automáticamente en una carpeta usando ASP clásico

he intentado utilizar el código http://blog.netnerds.net/2007/01/classic-asp-push-file-downloads-from-directory-outside-of-the-web-root/ pero esto no funciona para HTTP que funciona bien si los archivos son locales.

Quiero hacerlo automáticamente.

Respuesta

5

Tengo este código en algún lugar de Internet si alguien quiere usarlo.

<% 
Server.ScriptTimeout = 60 * 20 
' Set your settings 
strFileURL = "http://pathtofile.zip" 
strHDLocation = "c:\filename.zip" 

' Fetch the file 
Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0") 

objXMLHTTP.Open "GET", strFileURL, False 
objXMLHTTP.Send() 

If objXMLHTTP.Status = 200 Then 
    Set objADOStream = CreateObject("ADODB.Stream") 
    objADOStream.Open 
    objADOStream.Type = 1 'adTypeBinary 

    objADOStream.Write objXMLHTTP.ResponseBody 
    objADOStream.Position = 0 'Set the stream position to the start 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    If objFSO.FileExists(strHDLocation) Then objFSO.DeleteFile strHDLocation 
    Set objFSO = Nothing 

    objADOStream.SaveToFile strHDLocation 
    objADOStream.Close 
    Set objADOStream = Nothing 
End if 

Set objXMLHTTP = Nothing 
%> 
+7

Cambio "MSXML2.XMLHTTP" a "MSXML2.ServerXMLHTTP.3.0" (xmlhttp no es seguro para su uso en el código del servidor ASP). – AnthonyWJones

10

que utiliza el código publicado por user580950 y el comentario de AnthonyWJones y creó una versión de función del código. Llame a la función y devuelve el tipo de contenido del archivo descargado o una cadena vacía si no se encontró el archivo.

public function SaveFileFromUrl(Url, FileName) 
    dim objXMLHTTP, objADOStream, objFSO 

    Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0") 

    objXMLHTTP.open "GET", Url, false 
    objXMLHTTP.send() 

    If objXMLHTTP.Status = 200 Then 
     Set objADOStream = CreateObject("ADODB.Stream") 
     objADOStream.Open 
     objADOStream.Type = 1 'adTypeBinary 

     objADOStream.Write objXMLHTTP.ResponseBody 
     objADOStream.Position = 0 'Set the stream position to the start 

     Set objFSO = Createobject("Scripting.FileSystemObject") 
     If objFSO.Fileexists(FileName) Then objFSO.DeleteFile FileName 
     Set objFSO = Nothing 

     objADOStream.SaveToFile FileName 
     objADOStream.Close 
     Set objADOStream = Nothing 

     SaveFileFromUrl = objXMLHTTP.getResponseHeader("Content-Type") 
    else 
     SaveFileFromUrl = "" 
    End if 

    Set objXMLHTTP = Nothing 
end function