File upload vbs脚本只上载文件名,不上载内部数据
此脚本的问题在于,它在运行脚本时显示一条未知错误消息 我在ftp中通过echo方法调用了这个函数,即“filezilla”。 当它登录到服务器时,一切正常,检查路径,打开数据写入通道。还是不知道问题出在哪里File upload vbs脚本只上载文件名,不上载内部数据,file-upload,vbscript,upload,ftp,filezilla,File Upload,Vbscript,Upload,Ftp,Filezilla,此脚本的问题在于,它在运行脚本时显示一条未知错误消息 我在ftp中通过echo方法调用了这个函数,即“filezilla”。 当它登录到服务器时,一切正常,检查路径,打开数据写入通道。还是不知道问题出在哪里 Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath) 'This script is provided under the Creative Commons license located '
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
WScript.Echo "Process Completed (" & Now & ")"
End Function
函数FTPUpload(sSite、sUsername、sPassword、sLocalFile、sRemotePath)
'此脚本是根据位于的Creative Commons许可证提供的
”“在http://creativecommons.org/licenses/by-nc/2.5/ . 可能不会
“未经明确书面同意,不得用于商业目的
“来自NateRice.com
常量OpenAsDefault=-2
常数FailIfNotExist=0
常数ForReading=1
写入常数=2
pscript的集合fso=CreateObject(“Scripting.FileSystemObject”)
脚本Shell的集合=CreateObject(“WScript.Shell”)
sRemotePath=修剪(sRemotePath)
sLocalFile=修剪(sLocalFile)
'------------路径检查---------
'这里我们将检查路径,如果它包含
'然后我们需要添加引号以确保
“它解析正确。
如果InStr(sRemotePath,“”>0,则
如果左(sRemotePath,1)“”,右(sRemotePath,1)“”,则
sRemotePath=“”&sRemotePath&“”
如果结束
如果结束
如果InStr(sLocalFile,“”>0,则
如果左(sLocalFile,1)”,右(sLocalFile,1)”,则
sLocalFile=“”&sLocalFile&“”
如果结束
如果结束
'检查以确保远程路径是正确的
”“通过了。如果为空,则传递一个“\”
如果Len(sRemotePath)=0,则
'请注意,没有预先检查
'远程路径已完成。如果它在某些情况下不存在
”“原因。可能会出现意外的结果。
sRemotePath=“\”
如果结束
'检查本地路径和文件以确保
'存在的文件的
'传递或传递了通配符。
如果InStr(sLocalFile,“*”),则
如果InStr(sLocalFile,“”),则
FTPUpload=“错误:如果路径包含”&,则通配符上载不起作用_
“空格。”&vbCRLF
FTPUpload=FTPUpload&“这是Microsoft FTP客户端的一个限制。”
退出功能
如果结束
ElseIf Len(sLocalFile)=0或不存在oFTPScriptFSO.FileExists(sLocalFile),则
“没有要上传的内容
FTPUpload=“错误:找不到文件。”
退出功能
如果结束
'----------结束路径检查---------
'为ftp命令生成输入文件
sFTPScript=sFTPScript&“用户”&sUsername&vbCRLF
sFTPScript=sFTPScript&sPassword&vbCRLF
sFTPScript=sFTPScript&“cd”&sRemotePath&vbCRLF
sFTPScript=sFTPScript&“二进制”&vbCRLF
sFTPScript=sFTPScript&“提示符n”和vbCRLF
sFTPScript=sFTPScript&“put”&sLocalFile&vbCRLF
sFTPScript=sFTPScript&“退出”&vbCRLF&“退出”&vbCRLF&“退出”&vbCRLF
sFTPTemp=oFTPScriptShell.ExpandEnvironmentStrings(“%TEMP%”)
sFTPTempFile=sFTPTemp&“\”oFTPScriptFSO.GetTempName
sftpscriptfso.GetTempName的sftptelts=sFTPTemp&“\”&oFTPScriptFSO.GetTempName
'写入ftp命令的输入文件
'到一个临时文件。
Set-fFTPScript=oFTPScriptFSO.CreateTextFile(sFTPTempFile,True)
fFTPScript.WriteLine(sFTPScript)
fFTPScript.Close
Set-fFTPScript=Nothing
oFTPScriptShell。运行“%comspec%/c FTP-n-s:&sFTPTempFile&”&sSite&_
“>”&sFTPResults,0,TRUE
Wscript.Sleep 1000
'检查转移结果。
设置fFTPResults=oFTPScriptFSO.OpenTextFile(sFTPResults,ForReading_
FailIfNotExist,OpenAsDefault)
sResults=fFTPResults.ReadAll
fFTPResults.关闭
oFTPScriptFSO.DeleteFile(sFTPTempFile)
oFTPScriptFSO.DeleteFile(sFTPResults)
如果InStr(sResults,“226传输完成”)>0,则
FTPUpload=True
ElseIf InStr(sResults,“未找到文件”)>0然后
FTPUpload=“错误:找不到文件”
ElseIf InStr(sResults,“无法登录”)>0
FTPUpload=“错误:登录失败。”
其他的
FTPUpload=“错误:未知。”
如果结束
pscriptfso的集合=无
脚本shell集=无
WScript.Echo“进程已完成(&Now&)”
端函数