使用经典ASP从URL下载文件

use*_*950 5 asp-classic

我有几个链接到pdf示例的网址

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

我想要做的是使用经典ASP在文件夹中自动下载PDF

我试图使用这个代码http://blog.netnerds.net/2007/01/classic-asp-push-file-downloads-from-directory-outside-of-the-web-root/ 但这对Http不起作用如果文件是本地的,它的效果很好.

我想自动做.

Ben*_*pka 13

我使用了user580950发布的代码和AnthonyWJones的评论,并创建了代码的函数版本.调用该函数,它返回下载文件的内容类型,如果找不到文件,则返回空字符串.

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
Run Code Online (Sandbox Code Playgroud)


use*_*950 6

如果有人想使用它,我在互联网上的某个地方得到了这个代码.

<%
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
%> 
Run Code Online (Sandbox Code Playgroud)

  • 将"MSXML2.XMLHTTP"更改为"MSXML2.ServerXMLHTTP.3.0"(xmlhttp在ASP服务器代码中使用不安全). (7认同)