Image 从URL保存图像。在循环内失败,但在运行一次时不会失败
此功能的工作原理是:Image 从URL保存图像。在循环内失败,但在运行一次时不会失败,image,vbscript,asp-classic,Image,Vbscript,Asp Classic,此功能的工作原理是: Sub SaveImage(url, name) ' Set your settings strFileURL = url strHDLocation = "D:\Images\" & name ' Fetch the file Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false o
Sub SaveImage(url, name)
' Set your settings
strFileURL = url
strHDLocation = "D:\Images\" & name
' 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
End Sub
如果我调用它一次,它就会下载图像,如果我把它放在一个循环中,它就会失败,并出现不同的错误。
我在一个页面中设置这个函数,设置URL和图像名称,然后下载图像。
我对每个人都有许可。没有权限问题。
如果我将其放在一个单独的页面中,则从请求中获取URL和图像名称,如下所示:
Dim url, name
url = Request("url")
name = Request("name")
然后调用函数:
Call SaveImage(url, name)
我得到:
ADODB.Stream error '800a0bbc'
Write to file failed.
它下载图像
但是如果从同一个地方,我从循环中调用sub,如下所示:
上面声明了变量。数组已填充
For row = 0 To UBound(myArray, 2)
url = CStr(ar(1, row)) : image = id & ".jpg"
Call SaveImage2(url, image)
Next
它在第一个图像中失败
ADODB.Stream error '800a0bbc'
Write to file failed.
我尝试了其他流编写器,但其他流编写器的行为相同,但错误不同。我在这里猜测,但请尝试objADOStream.SaveToFile strHDLocation, adSaveCreateOverWrite@John还应使用Const adSaveCreateOverWrite=2,因为枚举常量在默认情况下不存在,需要在VBScript中使用之前定义。您是从查询字符串还是表单获取url和名称?因为如果它来自查询字符串,编码可能是您的问题。我从csv文件加载了它,然后循环遍历它。我想是的。我已经把URL的文本发布到页面上,然后从页面复制到一个函数中,一次就成功了。我很生气,所以我放弃了ASP,用.NET来解决问题。从技术上讲,我现在没有问题。谢谢。@JosefZ不需要显式定义它们,它们存在于DLL中,毕竟您只需要告诉Classic ASP查找它们。看见 ADODB.Stream error '800a0bbc' Write to file failed.