【问题标题】:Download Files from URL using Classic ASP使用经典 ASP 从 URL 下载文件
【发布时间】:2012-05-08 10:15:39
【问题描述】:

我有几个链接到 pdf 示例的 url

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

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

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

我想自动完成。

【问题讨论】:

    标签: asp-classic


    【解决方案1】:

    我使用了 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
    

    【讨论】:

      【解决方案2】:

      如果有人想使用,我在互联网上的某个地方获得了此代码。

      <%
      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
      %> 
      

      【讨论】:

      • 将“MSXML2.XMLHTTP”更改为“MSXML2.ServerXMLHTTP.3.0”(xmlhttp 在 ASP 服务器代码中使用不安全)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多