保存经典asp中自动生成的二进制文件

时间:2014-07-03 11:49:42

标签: asp-classic filesystemobject

我有一个perl脚本,可以在浏览器中生成midi文件。我想运行一个经典的asp脚本,二进制读取输出的midi文件并将其保存到服务器。但是使用查询字符串生成该文件,使用GetFile无法读入FileSystemObject

我想要的是

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("1090.pl?chord=C&chord_id=1090")
然而,这并不起作用。我正在寻找想法或其他方法如何将这个自动生成的midi文件读入二进制对象,然后我可以将其保存到服务器

1 个答案:

答案 0 :(得分:3)

您不能将文件系统对象用于此目的,而是可以使用XMLHTTP对象。这是一个如何使用它的例子。请注意,您需要更改strFileURL(1090.pl脚本的URL)和strHDLocation(在服务器上保存的位置 - 您还需要确保网站对您选择的任何位置具有读/写权限)。

<% 
' Set your settings 
strFileURL = "http://localhost/1090.pl?chord=C&chord_id=1090" 
strHDLocation = "c:\filename.ext"

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

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