Programming

From Vandelay Wiki
Jump to: navigation, search
 
Line 263: Line 263:
 
</pre>
 
</pre>
  
 +
<pre>
 +
Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath)
 +
  'This script is provided under the Creative Commons license located
 +
  'at http://creativecommons.org/licenses/by-nc/2.5/ . It may not
 +
  'be used for commercial purposes with out the expressed written consent
 +
  'of NateRice.com
 +
 +
  Const OpenAsDefault = -2
 +
  Const FailIfNotExist = 0
 +
  Const ForReading = 1
 +
  Const ForWriting = 2
 +
 +
  Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
 +
  Set oFTPScriptShell = CreateObject("WScript.Shell")
 +
 +
  sRemotePath = Trim(sRemotePath)
 +
  sLocalFile = Trim(sLocalFile)
 +
 +
  '----------Path Checks---------
 +
  'Here we willcheck the path, if it contains
 +
  'spaces then we need to add quotes to ensure
 +
  'it parses correctly.
 +
  If InStr(sRemotePath, " ") > 0 Then
 +
    If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
 +
      sRemotePath = """" & sRemotePath & """"
 +
    End If
 +
  End If
 +
 +
  If InStr(sLocalFile, " ") > 0 Then
 +
    If Left(sLocalFile, 1) <> """" And Right(sLocalFile, 1) <> """" Then
 +
      sLocalFile = """" & sLocalFile & """"
 +
    End If
 +
  End If
 +
 +
  'Check to ensure that a remote path was
 +
  'passed. If it's blank then pass a "\"
 +
  If Len(sRemotePath) = 0 Then
 +
    'Please note that no premptive checking of the
 +
    'remote path is done. If it does not exist for some
 +
    'reason. Unexpected results may occur.
 +
    sRemotePath = "\"
 +
  End If
 +
 +
  'Check the local path and file to ensure
 +
  'that either the a file that exists was
 +
  'passed or a wildcard was passed.
 +
  If InStr(sLocalFile, "*") Then
 +
    If InStr(sLocalFile, " ") Then
 +
      FTPUpload = "Error: Wildcard uploads do not work if the path contains a " & _
 +
      "space." & vbCRLF
 +
      FTPUpload = FTPUpload & "This is a limitation of the Microsoft FTP client."
 +
      Exit Function
 +
    End If
 +
  ElseIf Len(sLocalFile) = 0 Or Not oFTPScriptFSO.FileExists(sLocalFile) Then
 +
    'nothing to upload
 +
    FTPUpload = "Error: File Not Found."
 +
    Exit Function
 +
  End If
 +
  '--------END Path Checks---------
 +
 +
  'build input file for ftp command
 +
  sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
 +
  sFTPScript = sFTPScript & sPassword & vbCRLF
 +
  sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
 +
  sFTPScript = sFTPScript & "binary" & vbCRLF
 +
  sFTPScript = sFTPScript & "prompt n" & vbCRLF
 +
  sFTPScript = sFTPScript & "put " & sLocalFile & vbCRLF
 +
  sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
 +
 +
 +
  sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
 +
  sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
 +
  sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
 +
 +
  'Write the input file for the ftp command
 +
  'to a temporary file.
 +
  Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
 +
  fFTPScript.WriteLine(sFTPScript)
 +
  fFTPScript.Close
 +
  Set fFTPScript = Nothing
 +
 +
  oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & _
 +
  " > " & sFTPResults, 0, TRUE
 +
 +
  Wscript.Sleep 1000
 +
 +
  'Check results of transfer.
 +
  Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
 +
  FailIfNotExist, OpenAsDefault)
 +
  sResults = fFTPResults.ReadAll
 +
  fFTPResults.Close
 +
 +
  oFTPScriptFSO.DeleteFile(sFTPTempFile)
 +
  oFTPScriptFSO.DeleteFile (sFTPResults)
 +
 +
  If InStr(sResults, "226 Transfer complete.") > 0 Then
 +
    FTPUpload = True
 +
  ElseIf InStr(sResults, "File not found") > 0 Then
 +
    FTPUpload = "Error: File Not Found"
 +
  ElseIf InStr(sResults, "cannot log in.") > 0 Then
 +
    FTPUpload = "Error: Login Failed."
 +
  Else
 +
    FTPUpload = "Error: Unknown."
 +
  End If
 +
 +
  Set oFTPScriptFSO = Nothing
 +
  Set oFTPScriptShell = Nothing
 +
End Function
 +
</pre>
 
----
 
----
 
Back to [[Main_Page|Main Page]]
 
Back to [[Main_Page|Main Page]]

Latest revision as of 19:55, 30 October 2013

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox