Ошибка при загрузке файла на веб-сервер каждые 10 секунд - PullRequest
0 голосов
/ 25 октября 2018

Следующий код, который я использовал для загрузки кода без цикла, и код работает нормально, пока я не использую функцию цикла.

dim strURL
Dim password
Dim username 
Set wshShell = CreateObject("WScript.Shell")
UploadDest= wshShell.ExpandEnvironmentStrings("https://webdav.pcloud.com/Public%20Folder/")
UploadFile = wshShell.ExpandEnvironmentStrings("%username%.txt")
 username = "abc@gmail.com"
 password = "abc"
sData = getFileBytes(UploadFile, UploadType)
Set HttpReq =createobject("Microsoft.XMLHTTP")
strURL = UploadDest & "/" & UploadFile
HttpReq.Open "PUT",strURL,False,username,password
HttpReq.send sData 
function getFileBytes(flnm,sType)
  Dim objStream
  Set objStream = CreateObject("ADODB.Stream")
  if sType="binary" then
    objStream.Type = 1 ' adTypeBinary
  else
    objStream.Type = 2 ' adTypeText
    objStream.Charset ="ascii"
  end if
  objStream.Open
  objStream.LoadFromFile flnm
  if sType="binary" then
    getFileBytes=objStream.Read 'read binary'
  else
    getFileBytes= objStream.ReadText 'read ascii'
  end if
  objStream.Close
  Set objStream = Nothing
end function

Но когда я использую приведенный выше код в циклеЯ получил синтаксическую ошибку в строке №: 12

function getFileBytes(flnm,sType)

Я использовал следующий код для загрузки файла в цикле каждые 10 секунд.

set i = 0
Do While i = 0
dim strURL
Dim password
Dim username 
Set wshShell = CreateObject("WScript.Shell")
UploadDest= wshShell.ExpandEnvironmentStrings("https://webdav.pcloud.com/Public%20Folder/")
UploadFile = wshShell.ExpandEnvironmentStrings("%username%.txt")
 username = "abc@gmail.com"
 password = "abc"
sData = getFileBytes(UploadFile, UploadType)
Set HttpReq =createobject("Microsoft.XMLHTTP")
strURL = UploadDest & "/" & UploadFile
HttpReq.Open "PUT",strURL,False,username,password
HttpReq.send sData 
function getFileBytes(flnm,sType)
  Dim objStream
  Set objStream = CreateObject("ADODB.Stream")
  if sType="binary" then
    objStream.Type = 1 ' adTypeBinary
  else
    objStream.Type = 2 ' adTypeText
    objStream.Charset ="ascii"
  end if
  objStream.Open
  objStream.LoadFromFile flnm
  if sType="binary" then
    getFileBytes=objStream.Read 'read binary'
  else
    getFileBytes= objStream.ReadText 'read ascii'
  end if
  objStream.Close
  Set objStream = Nothing
end function
WScript.Sleep(10000)
loop

1 Ответ

0 голосов
/ 25 октября 2018

Вы не можете определить Function внутри Loop

Перепишите так, чтобы определить функцию вне цикла:

Dim i
Do While i = 0
    dim strURL
    Dim password
    Dim username 
    Set wshShell = CreateObject("WScript.Shell")
    UploadDest= wshShell.ExpandEnvironmentStrings("https://webdav.pcloud.com/Public%20Folder/")
    UploadFile = wshShell.ExpandEnvironmentStrings("%username%.txt")
    username = "abc@gmail.com"
    password = "abc"
    sData = getFileBytes(UploadFile, UploadType)
    Set HttpReq =createobject("Microsoft.XMLHTTP")
    strURL = UploadDest & "/" & UploadFile
    HttpReq.Open "PUT",strURL,False,username,password
    HttpReq.send sData 
    WScript.Sleep(10000)
loop

function getFileBytes(flnm,sType)
  Dim objStream
  Set objStream = CreateObject("ADODB.Stream")
  if sType="binary" then
    objStream.Type = 1 ' adTypeBinary
  else
    objStream.Type = 2 ' adTypeText
    objStream.Charset ="ascii"
  end if
  objStream.Open
  objStream.LoadFromFile flnm
  if sType="binary" then
    getFileBytes=objStream.Read 'read binary'
  else
    getFileBytes= objStream.ReadText 'read ascii'
  end if
  objStream.Close
  Set objStream = Nothing
end function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...