下载前测试URLDownloadToFile文件大小,以识别不存在的文件

时间:2018-10-08 12:58:49

标签: excel vba

当前,我正在运行excel vba,以将图像从URL下载到计算机上的特定文件夹。 vba完美运行。

但是,由于我运行vba的方式,有时我发送来从URL下载的图像实际上并不存在。即使图片不存在,网站的URL SEO也会创建空白图片,而不是返回错误页面。

因此,当我将URL发送到URLDownloadToFile时,我想测试文件的大小。如果它是特定的,固定的,小尺寸的...那么我会知道它是一个空白的创建图像,而不是实际图像,并且不尝试下载它。

我知道在发生下载后我可以运行另一个宏来测试文件大小并在下载后删除文件,但是我希望我可以以某种方式在下载尝试期间修改URLDownloadToFile而不是解析文件后缀。

    Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _
  Alias "URLDownloadToFileA" ( _
    ByVal pCaller As LongPtr, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As LongPtr, _
    ByVal lpfnCB As LongPtr _
  ) As Long

这是一个将下载的空白图像的示例: https://www.denverfoods.net/image/item/0265395?image=02

这是调用URLDownloadToFile的函数

Function DownloadFile(URL As String, LocalFilename As String) As Boolean
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then
        DownloadFile = True
    Else
        MsgBox ("Error Downloading, lngRetVal = " & lngRetVal & vbNewLine & vbNewLine & "URL = " & URL & vbNewLine & vbNewLine & "File = " & LocalFilename)
    End If
End Function

0 个答案:

没有答案